关于xml的菜鸟问题

Ryan4299899 2008-02-15 10:18:04
<?xml version="1.0" encoding="UTF-8" ?>
- <java class="java.beans.XMLDecoder" version="1.5.0_08">
- <Gz5hs_MemoryGame>
- <初级>
<No.1>456</No.1>
<No.2 />
<No.3 />
</初级>
- <中级>
<No.1>456</No.1>
<No.2 />
<No.3 />
</中级>
- <高级>
<No.1>456</No.1>
<No.2 />
<No.3 />
</高级>
</Gz5hs_MemoryGame>
</java>
生成了一个xml如上,然后我将将这个文件解释成document对象:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
Document doc = null;
try {
DocumentBuilder db = dbf.newDocumentBuilder。
doc = db.parse("E://myinfo.xml); //这是上面那个xml的路径
} catch (ParserConfigurationException pce) {
pce.printStackTrace();
} catch (SAXException se) {
se.printStackTrace();
} catch (IOException ie) {
ie.printStackTrace();
}
然后通过标签获取内容:
NodeList nl = doc.getElementsByTagName("初级");
这时却获取不到节点的值了.
System.out.println(nl.item(0).getFirstChild().getNodeValue());控制台输出为null,
以前写xml好像都是用类似方法读取的,不知为何现在无法获取值,盼望指教.
我是菜鸟,正在弄大作业,各位有空的请解答,万分感谢.
...全文
86 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ryan4299899 2008-02-16
  • 打赏
  • 举报
回复
刚才试过了,很正常的输出了3.难道这里出现了什么错误吗?
dracularking 2008-02-16
  • 打赏
  • 举报
回复
System.out.println(nl.item(0).getFirstChild().getNextSibling().getFirstChild().getNodeValue());


可以看下 "初级" 这个node 有几个child先

System.out.println(nl.item(0).getChildNodes().getLength());
Ryan4299899 2008-02-16
  • 打赏
  • 举报
回复
感谢帮助,分也不多,全给了
dracularking 2008-02-16
  • 打赏
  • 举报
回复
这个要看nodeType 对于Element类型的节点它们的nodeValue设置为null
详见API文档Node Interface
Ryan4299899 2008-02-16
  • 打赏
  • 举报
回复
对噢,我对于nodeValue理解错误了,我以为text节点就是上一节点的nodeValue.
那么我想再问一下:
nl.item(0).getFirstChild().

这里是<No.1> 456 </No.1>的那个节点,那么这时getNodeValue()输出为null,我想问一下,这个节点的nodeValue值是如何设置的呢?在xml里面表示在哪里?
还是用回这个例子
<?xml   version="1.0"   encoding="UTF-8"   ?>   
- <java class="java.beans.XMLDecoder" version="1.5.0_08">
- <Gz5hs_MemoryGame>
- <初级>
<No.1> 456 </No.1>
<No.2 />
<No.3 />
</初级>
- <中级>
<No.1> 456 </No.1>
<No.2 />
<No.3 />
</中级>
- <高级>
<No.1> 456 </No.1>
<No.2 />
<No.3 />
</高级>
</Gz5hs_MemoryGame>
</java>

dracularking 2008-02-16
  • 打赏
  • 举报
回复
正常输出说明你xml节点之间没有留空格和回车(刚发现的这个问题- -)

System.out.println(nl.item(0).getFirstChild().getFirstChild().getNodeValue());

nl.item(0)表示xml里第一个且唯一那个"初级"节点
nl.item(0).getFirstChild()表示"No.1"节点
nl.item(0).getFirstChild().getFirstChild()表示 "456"所在的text型节点(叶子节点)
最后getNodeValue()取值

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧