2016-12-27 82 views
0

私はXPathとXMLが初めてです。私はタグから特定のタグの値を取得しようとしています。ツリー構造にXMLを解析して同じタグの複数の値を取得する

<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> 

次のその特定のタグは私が親タグの「ID」と一緒に、このサンプル・ファイル内のすべての「タイトル」タグを取得します。私は既存の機能に追加する必要があるとして、私が使用JDOMのようないくつかの制限があり、XPathのなど使用することができます

すべてのヘルプは本当に理解されるであろう

+3

[ツアー](http://stackoverflow.com/tour)にアクセスし、[よく質問する] //stackoverflow.com/help/how-to-ask)。最初にコードを表示し、具体的な問題を説明する必要があります。 – vanje

答えて

0

あなたがノードならば何をしようとして達成することは非常に簡単ですあなたの例のようにまっすぐに構築されています。あなたは

  • にあなたが(JDOM)を使用する必要が何でもしてXMLファイルを解析しています

  • タイトルノードを取得するために、XPathクエリを使用してください。 (//titleは、あなたのケースで行います)
  • これらのタスクを処理するのに十分な簡単なはず祖父母要素のID

をゲット!

あなたが提供するコード:

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()); 
} 
だけで正常に動作し

コメントに加えて


。しかし、あなたが提供したコードにはUTF-8の問題があります。

+0

私が書いたコードが動作しているので、サンプルコードを共有してください。 javax.xml.xpath.XPath xpath = javax.xml.xpath.XPathFactory.newInstance()。newXPath(); \t org.w3c.dom.NodeList n1 =(org.w3c.dom.NodeList)xpath.evaluate( "article/front/article-meta /補足資料/キャプション/タイトル"、xmlDocument、javax.xml.xpath。 XPathConstants.NODESET); { \t \tのSystem.out.println(n1.item(K).getNodeName()+ "11" + n1.item(K(; K OPTIMUS

+0

このコードを使用しているときは、 "javax.xml.transform.TransformerException:XPathで不明なエラーが発生しました。"例外が来ている。 – OPTIMUS

+0

@OPTIMUS更新された回答を見てください – ParkerHalo

関連する問題