xml文件:myMessages.xml<?xml version="1.0" encoding="UTF-8"?>
<messages>
<message>Good-bye serialization, hello Java!</message>
</messages>java中用dom读myMessages.xml的代码:import javax.xml.parsers.*;
import org.w3c.dom.*;DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse("myMessages.xml");
doc.normalize();
Element myxml = doc.getDocumentElement();
System.out.println("根节点:"+myxml.getNodeName());
NodeList mymessage = myxml.getChildNodes();
System.out.println("子节点列表的长度为:" + mymessage.getLength());
for (int i = 0; i < mymessage.getLength(); i++) {
System.out.println("每个子节点的名细:" + mymessage.item(i).getNodeName());
}
String strMessage = mymessage.item(1).getChildNodes().item(0).
getNodeValue();
System.out.println("叶节点的文字内容:"+strMessage);显示结果:根节点:messages子节点列表的长度为:3每个子节点的名细:#text每个子节点的名细:message每个子节点的名细:#text叶节点的文字内容:Good-bye serialization, hello Java!xml文件明明只有一个<messages>节点,在用dom读时为何mymessage.getLength()为3呢?
而且这3个子节点中的2个“#text”是从何而来的啊!时在是不明白。
<messages>
<message>Good-bye serialization, hello Java!</message>
</messages>java中用dom读myMessages.xml的代码:import javax.xml.parsers.*;
import org.w3c.dom.*;DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse("myMessages.xml");
doc.normalize();
Element myxml = doc.getDocumentElement();
System.out.println("根节点:"+myxml.getNodeName());
NodeList mymessage = myxml.getChildNodes();
System.out.println("子节点列表的长度为:" + mymessage.getLength());
for (int i = 0; i < mymessage.getLength(); i++) {
System.out.println("每个子节点的名细:" + mymessage.item(i).getNodeName());
}
String strMessage = mymessage.item(1).getChildNodes().item(0).
getNodeValue();
System.out.println("叶节点的文字内容:"+strMessage);显示结果:根节点:messages子节点列表的长度为:3每个子节点的名细:#text每个子节点的名细:message每个子节点的名细:#text叶节点的文字内容:Good-bye serialization, hello Java!xml文件明明只有一个<messages>节点,在用dom读时为何mymessage.getLength()为3呢?
而且这3个子节点中的2个“#text”是从何而来的啊!时在是不明白。
解决方案 »
- 这种写法还头一次见。什么意思?
- jpanel 图片的显示
- 一个构造函数继承的问题
- 俺新来的,问个简单问题,怎么样才可以实现用JAVA向文本中插入文字的操作.
- 用反射反映类的功能中的疑点问题(小弟初学者,望高手指教) 十分着急......
- 如何用JAVA操作文件分配表(FAT)
- 关于接口、抽像类在使用上的疑问
- 请教小问题!
- 询问ie中的Applet的NotSuchMethodException异常!
- 求大神,java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
- 八个J2EE的高级群,按层次划分,共享教程代码,期待各位朋友加入(需考试)
- 有人参加过<加中实训>没有?感觉怎么样?高分求教
http://www0.ccidnet.com/tech/guide/2001/10/08/58_3393.html
同时也可用google查关键字:java,xml,dom
<messages>Before
<message>Good-bye serialization, hello Java!</message>After
</messages>代码改为如下:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse("messages.xml");
doc.normalize();
Element myxml = doc.getDocumentElement();
System.out.println("根节点:"+myxml.getNodeName());
NodeList mymessage = myxml.getChildNodes();
System.out.println("子节点列表的长度为:" + mymessage.getLength());
for (int i = 0; i < mymessage.getLength(); i++) {
Node node = mymessage.item(i);
System.out.println("每个子节点的名细:" + node.getNodeName()+"\t"+node.getNodeValue());
}
String strMessage = mymessage.item(1).getChildNodes().item(0).
getNodeValue();
System.out.println("叶节点的文字内容:"+strMessage);则输出变为:
根节点:messages
子节点列表的长度为:3
每个子节点的名细:#text Before
每个子节点的名细:message null
每个子节点的名细:#text After叶节点的文字内容:Good-bye serialization, hello Java!
<messages>Before
<message>Good-bye serialization, hello Java!</message>After
</messages>
的那一部分啊。除了“Before”是你后来加进去的,没有“Before”的话,就没有Text啊!怎么会有“#text”节点呢?
<messages>与<message>之间有一个text类型的子节点,在上面的XML文档里是指"Before";</message>和</messages>之间也有一个text类型的子节点,在上面的XML文档里是指"After". 即使<messages>与<message> 或 </message>和</messages>没有任何文本内容,DOM 也会视其为text类型的子节点,只是该子节点的值为Null