有一個XML文檔:Java的DOM:如何得到我有多少子元素
<entities xmlns="urn:yahoo:cap">
<entity score="0.988">
<text end="4" endchar="4" start="0" startchar="0">Messi</text>
<wiki_url>http://en.wikipedia.com/wiki/Lionel_Messi</wiki_url>
<types>
<type region="us">/person</type>
</types>
</entity>
</entities>
我有一個TreeMap<String,String> data
存儲的getTextContent()
同時爲"text"
和"wiki_url"
元素。有些"entity"
只會有"text"
元素(不是"wiki_url"
),所以我需要一種方法來查明何時只有文本元素作爲子元素,並且存在"wiki_url"
。我可以使用document.getElementByTag("text")
& document.getElementByTag("wiki_url")
但我會失去文字和網址之間的關係。
我試圖通過使用獲得"entity"
元素中量元素:
NodeList entities = document.getElementsByTagName("entity"); //List of all the entity nodes
int nchild; //Number of children
System.out.println("Number of entities: "+ entities.getLength()); //Prints 1 as expected
nchild=entities.item(0).getChildNodes().getLength(); //Returns 7
然而,由於上面顯示該返回7(這我就不明白了,肯定它的3或4,如果你包括孫子) 然後,我打算使用兒童的數量循環查看是否所有人都檢查getNodeName().equals("wiki_url")
,如果正確,將其保存到數據中。
爲什麼當我只能計算3個孩子和1個孫子時,我得到的孩子數爲7?
這聽起來像你只對* element *子節點感興趣......它不同於* all *子節點。 –
每個元素中的文本是否也算作一個孩子?這是唯一的方法我可以得到數字7 – Edd
是的 - 文本節點仍然是節點。最簡單的方法是遍歷子節點並打印出它們的類型... –