总结在java中及javascript中使用DOM解析xml文件的不同点
1. 生成DOM文档对象的方法不同
a) 在javascript中,创建DOM文档对象代码如下:
//创建xml文档
varxmlDoc = new ActiveXObject("Microsoft.xmldom");
//设置不支持异步
xmlDoc.async= false;
//加载xml文件
xmlDoc.load("demo03.xml");
b) 在java中,创建DOM文档对象代码如下:
//创建一个解析器工程对象
PublicDocument document;
DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance();
//创建一个解析器对象
DocumentBuilderbuilder = factory.newDocumentBuilder();
//创建一个xml文件在内存的树形节点模型
document=builder.parse(DomReaderXML.class.getClassLoader().getResourceAsStream("xml文件"));
2.获取根节点及属性名以及属性值的方法
c) 在javascript中获取:
varroot = xmlDoc.documentElement//获取根节点
varnode=xmlDoc.documentElement.childNodes[0];//根节点下面的节点
document.write("<br/>==="+node.baseName);//baseName,用于输出节点标签
//节点类型,其中1代表元素节点,2代表属性节点,3代表文本节点
document.write("<br/>节点类型:"+node.nodeType+"<br/>");
document.write("根元素节点名称:"+node.ownerDocument.documentElement.tagName+"<br/>");
document.write("当前节点的属性名:"+node.attributes[0].name+"<br/>");
document.write("当前节点的属性值:"+node.attributes[0].value);
document.write("<br/>当前节点及其子节点所包含的文本"+node.text);
d) 在java中获取:
将xml文档中的数据转换成集合对象
//获取所有student节点集合
NodeListnodes = document.getElementsByTagName("student");
List<Student>stuList = new ArrayList<Student>();
//采用for循环输出节点的标签名和属性
for(int i=0;i<nodes.getLength();i++){
Student stu = new Student();
//转换成element元素对象
Element element = (Element)nodes.item(i);
//System.out.println(element.getNodeName());
//属性值
String id = element.getAttribute("id");
stu.setId(id);
NodeList childs =element.getChildNodes();
String name =document.getElementsByTagName("name").item(i).getFirstChild().getNodeValue();
stu.setName(name);
String strAge =document.getElementsByTagName("age").item(i).getFirstChild().getNodeValue();
stu.setAge(Integer.parseInt(strAge));
String sex = document.getElementsByTagName("sex").item(i).getFirstChild().getNodeValue();
stu.setSex(sex);
stuList.add(stu);
}
//加载完成之后,采用xml文件的方式进行查找结点
NodeList nodelist = document.getElementsByTagName("student");
for(int i =0; i<nodelist.getLength();i++){
Elementstuelement = (Element) nodelist.item(i);
//获取属性的值
String idValue =stuelement.getAttribute("id");
//System.out.println("id属性值"+idValue);
NodeList child =stuelement.getChildNodes();
for(int j=0;j<child.getLength();j++){
if(child.item(j).getNodeType()==Node.ELEMENT_NODE){
//System.out.println(Node.ELEMENT_NODE);
System.out.println(child.item(j).getNodeType());
Node node = child.item(j); System.out.println(node.getNodeName()+"=="+node.getTextContent());
}
}