Frage

Ich habe einige XML ich mit XPath Probleme Verarbeitung habe. Ich kann nicht scheinen, um die Werte zu erhalten, ich suche. Die XML ist wie folgt aufgebaut:

<Group>
   <Menu>
      <Name>Top Menu</Name>
      <Document>
         <DocName>Readme.txt</DocName>
      </Document>
      <Menu>
         <Name>Sub Menu</Name>
         <Document>
            <DocName>Manual.pdf</DocName>
         </Document>
         <Document>
            <DocName>UserGuide.pdf</DocName>
         </Document>
      </Menu>
   </Menu>
</Group>

die Menünamen gegeben, ich mag eine Liste von DocumentNodes im Menü kommen. Zum Beispiel gegeben „Sub-Menü“, würde Ich mag die beiden Document Knoten für Manual.pdf und userguide.pdf zurück zu erhalten.

Derzeit Ich ziehe diese Daten Code, der durch die Kinder-Schleifen, aber, würde ich lieber nur direkt mit XPath nach oben ziehen, aber meine Fähigkeiten mit ihm sind schwach.

(Und bevor Sie fragen, ich kann die XML nicht neu strukturieren. Es ist auf diese Weise zu mir zur Verfügung gestellt.)

Alle Gedanken?

War es hilfreich?

Lösung

Hier ist ein XPath, die das tun, was Sie wollen:

  

//Menu[Name='Sub Menu']/Document

Andere Tipps

/<Menu>[\w\n]*<Name>Sub Menu</Name>[\w\n]*<Document>[\w\n]*(<DocName>([a-ZA-Z0-9\.]+)</DocName>[\w\n]*)*</Menu>/

Wurde mehr als wahrscheinlich Arbeit (mit ein wenig Feintuning, das ist ein wenig rau!), Aber ich glaube nicht, Regex ist der Weg zu gehen. Ich würde persönlich verwenden XPath oder DOM

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top