2016-12-27 77 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

請參考[tour](http://stackoverflow.com/tour)並閱讀[我如何提出一個好問題](http: //stackoverflow.com/help/how-to-ask)。您應該先顯示您的代碼並解釋您具體的問題。 – vanje

回答

0

這是很容易做到你想如果節點做什麼像你的例子一樣直立起來。

你必須

  • 解析XML文件,不管你需要使用(JDOM)
  • 使用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()); 
} 

的作品就好了。但你提供的代碼在我的IDE中有一些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/supplemental-material/caption/title」,xmlDocument,javax.xml.xpath。 XPathConstants.NODESET); \t對(INT K = 0; k OPTIMUS

+0

當我使用此代碼,然後「javax.xml.transform.TransformerException:XPath中的未知錯誤」。例外即將到來。 – OPTIMUS

+0

@OPTIMUS看看更新的答案 – ParkerHalo

相關問題