2011-01-07 8 views
2

Ich hoffe, Sie haben einen schönen Tag.So erhalten Sie eine Liste von String aus Dom4j Node.selectObject oder Node.selectNodes

Die DOM4J javadoc Form Node.selectObject (String XPathExpression) sagt der folgende:

... Das zurückgegebene Objekt entweder eine Liste von einem oder mehreren Knoteninstanzen oder ein Skalar Objekt wie ein sein kann String oder eine Zahleninstanz abhängig vom XPath-Ausdruck.

aber wenn ich versuche, eine Liste von String auf diesem Stück xml zu erhalten:

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

mit dem folgenden Code:

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

ich eine Liste von org.dom4j bekommen. tree.DefaultText objet. Natürlich kann ich auf der Liste iterieren, aber ich möchte wissen, ob es eine Möglichkeit gibt, eine Liste von String zu bekommen.

Antwort

0

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

Ein Ausdruck ausgewertet wird ein Objekt zu erhalten, das eine der folgenden vier grundlegende Typen:

  • Knotenmenge (eine ungeordnete Ansammlung von Knoten ohne Duplikate)
  • boolesch (wahr oder falsch)
  • nummer (eine Gleitkommazahl)
  • string (eine Folge von UCS Zeichen)

So, 1.0 keine Folge von xs:string in XPath

In XPath 2.0 gibt es eine Sequenz-Datentyp ist, natürlich ...

+0

I benutze XPath 2.0. Ich verstehe deine Antwort nicht. Selbst wenn ein Ausdruck als Ergebnis und Objekt des beschriebenen Typs ausgewertet wird, sollte Dom4j Api eine String-Liste zurückgeben, nicht wahr. – Periworks

+0

@Periworks: Wenn Sie XML-Knoten auswählen, sollte das Ergebnis eine 'List' von' Node' von http://dom4j.sourceforge.net/dom4j-1.4/apidocs/org/dom4j/Node.html#selectObject(java) sein .lang.String). Beachten Sie auch, dass diese Methode zugunsten von 'evaluate' veraltet ist und keine Hinweise darauf vorliegen, dass eine dom4j-Schnittstelle mit einer XPath 2.0-Engine arbeiten kann –