2013-09-23 36 views
0

我正在遍历一个XML,期望的输出是形成一个二叉树。我的XML是在Xml节点上迭代

<SUB> 
    <IN> 
     <Number> 
      <ID>1</ID> 
      <ID>2</ID> 
     </Number> 
    </IN> 
</SUB> 

所以预期输出中是作为SUB父节点,随后孩子nodes.While我试图遍历SUB节点的给我5个values..3值#text ..?

我需要添加IN作为左节点。

+0

你能解释清楚吗? –

+0

如果你按照我上面的XML ..我需要从它形成一个二叉树,它具有SUB作为父节点..IN作为它的左节点,随后ID作为它的子节点...并且从它形成一个INFIX表达式 – sukha

+0

表达式将是(IN条件)SUB..sumthing lyk dis – sukha

回答

0

虽然迭代,你需要检查节点的节点类型是Element类型为
exampleNode.getNodeType()== Node.ELEMENT_NODE 如果上述条件为真,XML那么只有输入所以它会返回2个值而不是5个。

+0

谢谢..它的工作.. – sukha

+0

不忘记upvote,如果它适合你 –

+0

嗨,你能帮助我建立整个树..我增加了一个元素..和dis应该是我的下一个子小孩的父节点..但是当我这样做..它说节点到字符串转换是不可能的 – sukha

0

找到像#text或#comment这样的值是很常见的。

这是我用它来避免这些:

if (node.getNodeName().equals("#text")|| node.getNodeName().equals("#comment")) continue; 

而且也注意到在Node转换为Element后这样做检查。或者您将尝试将#text文字转换为Element,并且会抛出异常。

+0

嗨,你能请帮助我建立整个树..我已经添加了一个元素..和dis应该是我的下一个子小孩的父节点..但是当我这样做..它说节点到字符串转换是不可能的 - – sukha

+0

坚持下去,让我的工作代码复制到pastebin – Reinherd

+0

JAVA:http://pastebin.com/P3AsyDxM XML:http://pastebin.com/eb6eGRei – Reinherd