当前位置: 技术问答>java相关
一个令我困惑的问题(关于xml的解析)
来源: 互联网 发布时间:2015-04-30
本文导语: 我想用java解析xml文件生成一棵树,但令我百思不得其解的问题是:当我用getNodeName()时怎么返回#text? 原码如下: Element element=doc.getDocumentElement(); DefaultMutableTreeNode root=new DefaultMutableTreeNode(element.getTagName(...
我想用java解析xml文件生成一棵树,但令我百思不得其解的问题是:当我用getNodeName()时怎么返回#text?
原码如下:
Element element=doc.getDocumentElement();
DefaultMutableTreeNode root=new DefaultMutableTreeNode(element.getTagName());
DefaultMutableTreeNode temp;
Node child=element.getFirstChild();
while(child!=element.getLastChild())
{
temp=new DefaultMutableTreeNode( child.getNodeName());
root.add(temp);
child=child.getNextSibling();
}
temp=new DefaultMutableTreeNode(child.getNodeName());
root.add(temp);
DefaultTreeModel model=(DefaultTreeModel) jTree1.getModel();
model.setRoot(root);
原码如下:
Element element=doc.getDocumentElement();
DefaultMutableTreeNode root=new DefaultMutableTreeNode(element.getTagName());
DefaultMutableTreeNode temp;
Node child=element.getFirstChild();
while(child!=element.getLastChild())
{
temp=new DefaultMutableTreeNode( child.getNodeName());
root.add(temp);
child=child.getNextSibling();
}
temp=new DefaultMutableTreeNode(child.getNodeName());
root.add(temp);
DefaultTreeModel model=(DefaultTreeModel) jTree1.getModel();
model.setRoot(root);
|
这是因为你忽略了文本节点这一种节点类型,可以把while循环的代码改为如下代码:
while(child!=element.getLastChild())
{ //忽略文本节点
if (child.getNodeType() == child.ELEMENT_NODE){
temp=new DefaultMutableTreeNode( child.getNodeName());
root.add(temp);
}child=child.getNextSibling();
}
while(child!=element.getLastChild())
{ //忽略文本节点
if (child.getNodeType() == child.ELEMENT_NODE){
temp=new DefaultMutableTreeNode( child.getNodeName());
root.add(temp);
}child=child.getNextSibling();
}