您的位置:首页 > 其它

【慕课笔记】2-3 应用DOM方式解析XML—使用 DOM 解析XML 文件的节点名和节点值

2016-04-07 23:31 871 查看
2-3 使用 DOM 解析XML 文件的节点名和节点值






package com.imooc.xml;

import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class Test {

public static void main(String[] args) {
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
try {
DocumentBuilder db=dbf.newDocumentBuilder();
Document document=db.parse("haha.xml");
//获取所有book结点的结合
NodeList nodelist=document.getElementsByTagName("book");
System.out.println("共有"+nodelist.getLength()+"本书");
for(int i=0;i<nodelist.getLength();i++){
//通过item(i)方法 获取一个book结点 nodelist索引值从0开始
Node book=nodelist.item(i);
//获取book结点的所有属性
NamedNodeMap attrs=book.getAttributes();
System.out.println("第"+(i+1)+"本书有"+attrs.getLength()+"个属性");
//遍历book的属性
for(int j=0;j<attrs.getLength();j++){
//通过item(index)方法获取book结点的每个属性
Node attr=attrs.item(j);
//获取属性名
System.out.println(attr.getNodeName());
//获取属性值
System.out.println(attr.getNodeValue());

}

//将book结点进行强制类型转换,转换成Element类型
//				Element book=(Element) nodelist.item(i);
//				String attrValue=book.getAttribute("id");
//				System.out.println("id的值为"+attrValue);

//解析book结点的子节点
NodeList childnodes=book.getChildNodes();
//遍历childnodes获取每个结点名和结点值
System.out.println("第"+(i+1)+"本书共有"+childnodes.getLength());
//遍历childnodes获取每个结点
for(int k=0;k<childnodes.getLength();k++){
//区分出text类型的node以及element类型的node
if(childnodes.item(k).getNodeType()==Node.ELEMENT_NODE){
System.out.print("第"+(k+1)+"个结点的节点名:"+
childnodes.item(k).getNodeName());
//					System.out.println("--节点值为:"+childnodes.item(k).getFirstChild().getNodeValue());
System.out.println("--节点值为:"+childnodes.item(k).getTextContent());//所有值

}
}

}

}

catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: