我有一个XML文档:
<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"
)所以我需要一种方法来找出当只有文本元素作为子元素时以及有{{1}元素时1}}。我可以使用"wiki_url"
&amp; document.getElementByTag("text")
然后我会失去文本和网址之间的关系。
我正在尝试使用以下内容获取document.getElementByTag("wiki_url")
元素中的元素数量:
"entity"
然而如上所示,这将返回7(我不明白,如果你包括孙子,肯定是3或4)
然后,我将使用子项的数量循环遍历它们以检查是否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
并将其保存到数据中,如果正确的话。
为什么当我只能算上3个孩子和1个孙子时,我得到7个孩子的数量?
答案 0 :(得分:3)
>
<entity score="0.988">
之后的空格也计入节点,同样标签之间的行尾符号也被解析为节点。如果您对具有名称的特定节点感兴趣,请添加如下所示的帮助方法,并在任何地方调用。
Node getChild(final NodeList list, final String name)
{
for (int i = 0; i < list.getLength(); i++)
{
final Node node = list.item(i);
if (name.equals(node.getNodeName()))
{
return node;
}
}
return null;
}
并致电
final NodeList childNodes = entities.item(0).getChildNodes();
final Node textNode = getChild(childNodes, "text");
final Node wikiUrlNode = getChild(childNodes, "wiki_url");
通常在使用DOM时,请使用上面的辅助方法来简化主处理逻辑。