2016-12-27 3 views
0

Ich bin neu in XPath und XML. Ich versuche Werte eines bestimmten Tags vom Tag abzurufen. zusammen mit ‚id‘ von Eltern-Tag, der bestimmte Tag in folgenden BaumstrukturParse XML, um mehrere Werte desselben Tags abzurufen

<article> 
<front> 
<article-meta> 
<supplementary-material id="SM2379"> 
<caption><title>arg_3.docx</title></caption> 
</supplementary-material> 
<supplementary-material id="SM2375"> 
<caption><title>arg_2.docx</title></caption> 
</supplementary-material> 
<supplementary-material id="SM2373"> 
<caption><title>Sulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.doc</title></caption> 
</supplementary-material> 
</article-meta> 
</front> 
</article> 

Ich möchte alle ‚Titel‘ Tag in dieser Beispieldatei abgerufen werden. Wie ich auf bestehende Funktionalität hinzufügen muss ich einige Einschränkungen wie Verwendung jdom haben können, verwenden XPath etc

Jede Hilfe wirklich geschätzt wird

+3

Bitte nehmen Sie die [Tour] (http://Stackoverflow.com/tour) und lesen Sie [Wie stelle ich eine gute Frage] (http: //stackoverflow.com/help/how-to-ask). Sie sollten zuerst Ihren Code zeigen und die konkreten Probleme erklären, die Sie haben. – vanje

Antwort

0

Es ist ganz leicht zu erreichen, was Sie versuchen, wenn die Knoten zu tun sind wie in Ihrem Beispiel aufgebaut.

Du musst

  • die XML-Datei mit Parse was auch immer Sie verwenden müssen (jdom)
  • eine XPath-Abfrage Verwenden Sie den Titel Knoten abzurufen. (//title wird in Ihrem Fall tun)
  • Holen Sie sich die ID des Großeltern-Elements

sollten diese Aufgaben einfach genug zu handhaben!


Neben dem Kommentar:

Der Code von Ihnen zur Verfügung gestellten:

XPath xpath = XPathFactory.newInstance().newXPath(); 
NodeList n1 = (NodeList) xpath.evaluate("article/front/article-meta/supplementary-material/caption/title", document, XPathConstants.NODESET); 
for (int k = 0; k < n1.getLength();k++) 
{ 
    System.out.println(n1.item(k).getNodeName()+" : "+n1.item(k).getTextContent()); 
} 

funktioniert gut. Aber der Code, den Sie zur Verfügung gestellt haben, hatte einige UTF-8 Ausgaben in meiner IDE

+0

Können Sie bitte Beispielcode dafür als Code teilen, den ich geschrieben habe, funktioniert. javax.xml.xpath.XPath xpath = javax.xml.xpath.XPathFactory.newInstance(). newXPath(); \t org.w3c.dom.NodeList n1 = (org.w3c.dom.NodeList) xpath.evaluate ("Artikel/Front/Artikel-Meta/Zusatzmaterial/Titel/Titel", xmlDocument, javax.xml.xpath. XPathConstants.NODESET); \t for (int k = 0; k OPTIMUS

+0

Wenn ich diesen Code dann "javax.xml.transform.TransformerException: Unbekannter Fehler in XPath." Ausnahme kommt. – OPTIMUS

+0

@OPTIMUS werfen Sie einen Blick auf die aktualisierte Antwort – ParkerHalo