孙鑫javaweb开发详解的一个例子的疑问 xml
时间:2010-08-28
来源:互联网
xml文件为:<?xml version="1.0" encoding="GB2312"?>
<?xml-stylesheet type="text/xsl" href="students.xsl"?>
<students>
<student sn="01">
<name>张三</name>
<age>18</age>
</student>
<student sn="02">
<name>李四</name>
<age>20</age>
</student>
</students>
java文件对xml文件的各个节点进行读取:
public class DOMPrinter {
public static void main(String [] args){
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new File ("students.xml"));
printNode (doc);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void printNode (Node node){
int nodeType = node.getNodeType();
switch(nodeType){
case Node.PROCESSING_INSTRUCTION_NODE :
System.out.println("-------PI start-------");
printNodeInfo(node);
System.out.println("-------PI end-------");
break;
case Node.ELEMENT_NODE :
System.out.println("-------ELEMENT start-------");
printNodeInfo(node);
System.out.println("-------ELEMENT end-------");
NamedNodeMap attrs = node.getAttributes();
int attrNum = attrs.getLength();
for (int i=0;i<attrNum;i++){
Node attr = attrs.item(i);
System.out.println("-------ATTRIBUTE start-------");
printNodeInfo(attr);
System.out.println("-------ATTRIBUTE end-------");
}
break;
case Node.TEXT_NODE :
System.out.println("-------TEXT start-------");
printNodeInfo(node);
System.out.println("-------TEXT end-------");
break;
default:
break;
}
Node child = node.getFirstChild();
while (child!=null){
printNode (child);
child = child.getNextSibling();
}
}
public static void printNodeInfo(Node node){
System.out.println(node.getNodeName()+":"+node.getNodeValue());
}
}
结果为:-------PI start-------
xml-stylesheet:type="text/xsl" href="students.xsl"
-------PI end-------
-------ELEMENT start-------
students:null
-------ELEMENT end-------
-------TEXT start-------
#text:
-------TEXT end-------
-------ELEMENT start-------
student:null
-------ELEMENT end-------
-------ATTRIBUTE start-------
sn:01
-------ATTRIBUTE end-------
-------TEXT start-------
#text:
-------TEXT end-------
-------ELEMENT start-------
name:null
-------ELEMENT end-------
-------TEXT start-------
#text:张三
-------TEXT end-------
-------TEXT start-------
#text:
-------TEXT end-------
-------ELEMENT start-------
age:null
-------ELEMENT end-------
-------TEXT start-------
#text:18
-------TEXT end-------
-------TEXT start-------
#text:
-------TEXT end-------
-------TEXT start-------
#text:
-------TEXT end-------
-------ELEMENT start-------
student:null
-------ELEMENT end-------
-------ATTRIBUTE start-------
sn:02
-------ATTRIBUTE end-------
-------TEXT start-------
#text:
-------TEXT end-------
-------ELEMENT start-------
name:null
-------ELEMENT end-------
-------TEXT start-------
#text:李四
-------TEXT end-------
-------TEXT start-------
#text:
-------TEXT end-------
-------ELEMENT start-------
age:null
-------ELEMENT end-------
-------TEXT start-------
#text:20
-------TEXT end-------
-------TEXT start-------
#text:
-------TEXT end-------
-------TEXT start-------
#text:
-------TEXT end-------
明明name元素有值,怎么读出来的是null,而且name节点后有两个空的text节点,我很疑惑,谁可以解释一下结果。。。
<?xml-stylesheet type="text/xsl" href="students.xsl"?>
<students>
<student sn="01">
<name>张三</name>
<age>18</age>
</student>
<student sn="02">
<name>李四</name>
<age>20</age>
</student>
</students>
java文件对xml文件的各个节点进行读取:
public class DOMPrinter {
public static void main(String [] args){
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new File ("students.xml"));
printNode (doc);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void printNode (Node node){
int nodeType = node.getNodeType();
switch(nodeType){
case Node.PROCESSING_INSTRUCTION_NODE :
System.out.println("-------PI start-------");
printNodeInfo(node);
System.out.println("-------PI end-------");
break;
case Node.ELEMENT_NODE :
System.out.println("-------ELEMENT start-------");
printNodeInfo(node);
System.out.println("-------ELEMENT end-------");
NamedNodeMap attrs = node.getAttributes();
int attrNum = attrs.getLength();
for (int i=0;i<attrNum;i++){
Node attr = attrs.item(i);
System.out.println("-------ATTRIBUTE start-------");
printNodeInfo(attr);
System.out.println("-------ATTRIBUTE end-------");
}
break;
case Node.TEXT_NODE :
System.out.println("-------TEXT start-------");
printNodeInfo(node);
System.out.println("-------TEXT end-------");
break;
default:
break;
}
Node child = node.getFirstChild();
while (child!=null){
printNode (child);
child = child.getNextSibling();
}
}
public static void printNodeInfo(Node node){
System.out.println(node.getNodeName()+":"+node.getNodeValue());
}
}
结果为:-------PI start-------
xml-stylesheet:type="text/xsl" href="students.xsl"
-------PI end-------
-------ELEMENT start-------
students:null
-------ELEMENT end-------
-------TEXT start-------
#text:
-------TEXT end-------
-------ELEMENT start-------
student:null
-------ELEMENT end-------
-------ATTRIBUTE start-------
sn:01
-------ATTRIBUTE end-------
-------TEXT start-------
#text:
-------TEXT end-------
-------ELEMENT start-------
name:null
-------ELEMENT end-------
-------TEXT start-------
#text:张三
-------TEXT end-------
-------TEXT start-------
#text:
-------TEXT end-------
-------ELEMENT start-------
age:null
-------ELEMENT end-------
-------TEXT start-------
#text:18
-------TEXT end-------
-------TEXT start-------
#text:
-------TEXT end-------
-------TEXT start-------
#text:
-------TEXT end-------
-------ELEMENT start-------
student:null
-------ELEMENT end-------
-------ATTRIBUTE start-------
sn:02
-------ATTRIBUTE end-------
-------TEXT start-------
#text:
-------TEXT end-------
-------ELEMENT start-------
name:null
-------ELEMENT end-------
-------TEXT start-------
#text:李四
-------TEXT end-------
-------TEXT start-------
#text:
-------TEXT end-------
-------ELEMENT start-------
age:null
-------ELEMENT end-------
-------TEXT start-------
#text:20
-------TEXT end-------
-------TEXT start-------
#text:
-------TEXT end-------
-------TEXT start-------
#text:
-------TEXT end-------
明明name元素有值,怎么读出来的是null,而且name节点后有两个空的text节点,我很疑惑,谁可以解释一下结果。。。
作者: superdcj 发布时间: 2010-08-28
1.先看看是否符合原书代码,或者就是原书配套的示例源码.
2.如果是的话,可以到孙鑫的网站上去和他联系.他才是你该问的正主.
2.如果是的话,可以到孙鑫的网站上去和他联系.他才是你该问的正主.
作者: theforever 发布时间: 2010-08-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28