Android DOM解析器,如何获取子节点?
我有以下XML结构Android DOM解析器,如何获取子节点?,android,xml,dom,Android,Xml,Dom,我有以下XML结构 <urlset><!-- lib.meine_sitemap [begin] --> <menu level="1"> <title>Products</title> <url>index.php?id=395</url> <menu level="2"> <title>Titl
<urlset><!-- lib.meine_sitemap [begin] -->
<menu level="1">
<title>Products</title>
<url>index.php?id=395</url>
<menu level="2">
<title>Title</title>
<url>index.php?id=426</url>
<menu level="3">
<title>Title</title>
<url>index.php?id=437</url>
<cat>41</cat>
<cat>42</cat>
</menu>
<menu level="3">
<title>Title</title>
<url>index.php?id=436</url>
<cat>80</cat>
</menu>
</menu>
</menu>
(...)
</urlset>
我得到所有元素,而不仅仅是菜单级别1的子节点
当我使用
NodeList nodes = doc.getChildElements();
这似乎有效,但我不能再这样做了:
nodes.item(0).getChildElements();
如何实现仅获取节点的子菜单
谢谢 所以我终于找到了解决办法。诀窍在于使用
node.getNextSibling()
下面的代码获取所有菜单
标记,然后读取它们的标题
标记并将其添加到Arraylist中
private void diveDeep(int index)
{
currentNode = (Node)currentNodes.get(index);
currentNodes = new ArrayList<Node>();
valueList = new ArrayList<String>();
Node childNode = currentNode.getFirstChild();
while(childNode.getNextSibling() != null)
{
childNode = childNode.getNextSibling();
if(childNode.getNodeName().equals("menu"))
{
currentNodes.add(childNode);
NodeList nodes = childNode.getChildNodes();
for(int i = 0; i < nodes.getLength(); i++)
{
if(nodes.item(i).getNodeName().equals("title"))
{
valueList.add(nodes.item(i).getTextContent());
}
}
}
}
}
private void divideep(整数索引)
{
currentNode=(节点)currentNodes.get(索引);
currentNodes=新的ArrayList();
valueList=新的ArrayList();
Node-childNode=currentNode.getFirstChild();
while(childNode.getNextSibling()!=null)
{
childNode=childNode.getNextSibling();
if(childNode.getNodeName().equals(“菜单”))
{
currentNodes.add(childNode);
NodeList nodes=childNode.getChildNodes();
对于(int i=0;i
可能相关:
private void diveDeep(int index)
{
currentNode = (Node)currentNodes.get(index);
currentNodes = new ArrayList<Node>();
valueList = new ArrayList<String>();
Node childNode = currentNode.getFirstChild();
while(childNode.getNextSibling() != null)
{
childNode = childNode.getNextSibling();
if(childNode.getNodeName().equals("menu"))
{
currentNodes.add(childNode);
NodeList nodes = childNode.getChildNodes();
for(int i = 0; i < nodes.getLength(); i++)
{
if(nodes.item(i).getNodeName().equals("title"))
{
valueList.add(nodes.item(i).getTextContent());
}
}
}
}
}