+ -
当前位置:首页 → 问答吧 → 孙鑫javaweb开发详解的一个例子的疑问 xml

孙鑫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节点,我很疑惑,谁可以解释一下结果。。。

作者: superdcj   发布时间: 2010-08-28

1.先看看是否符合原书代码,或者就是原书配套的示例源码.
2.如果是的话,可以到孙鑫的网站上去和他联系.他才是你该问的正主.

作者: theforever   发布时间: 2010-08-28