How to get a list of String from Dom4j Node.select

2019-07-11 02:31发布

问题:

Hope you have a good day.

The Dom4j javadoc form Node.selectObject(String xpathExpression) says the following:

...The object returned can either be a List of one or more Node instances or a scalar object like a String or a Number instance depending on the XPath expression.

However when I try to get a list of String on this piece of xml:

<root>
...
    <level1>
        <property>pro1</property>
        <property>pro1</property>
        <property>pro1</property>
    <level1>
...
</root>

with the following code:

List result = document.selectObject("/root/level1/property/text()")

I get a list of org.dom4j.tree.DefaultText objet. Of course I can iterate on the list but I yould like to know if there is a way to get a list of String.

回答1:

From http://www.w3.org/TR/xpath/#section-Introduction

An expression is evaluated to yield an object, which has one of the following four basic types:

  • node-set (an unordered collection of nodes without duplicates)
  • boolean (true or false)
  • number (a floating-point number)
  • string (a sequence of UCS characters)

So, no sequence of xs:string in XPath 1.0

In XPath 2.0 there is a sequence data type, of course...



标签: xml xpath dom4j