JAVA解析XML文件(一)---DOM方式
2015-11-22 19:02
555 查看
JAVA解析XML文件(一)—DOM方式解析
1.XML文件内容:
2.JAVA代码:
1.XML文件内容:
<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book id="1"> <name>冰与火之歌</name> <author>乔治·马丁</author> <year>2015</year> <price>200</price> </book> <book id="2"> <name>光荣与梦想</name> <year>2004</year> <price>150</price> <publish>科学出版社</publish> </book> </bookstore>
2.JAVA代码:
public DocumentBuilder getDocumentBuilder(){ //创建DocumentBuilderFactory对象 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); //创建DocumentBuilder对象 DocumentBuilder db = null; try { db = dbf.newDocumentBuilder(); } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } return db; }
public void domParser(){ try { //通过DocumentBuilder对象的parse方法加载xml文件到当前项目下 Document document = getDocumentBuilder().parse("MyFirstXML.xml"); //获取book标签的列表 NodeList booklist = document.getElementsByTagName("book"); System.out.println("一共有"+booklist.getLength()+"本书"); for(int i=0; i<booklist.getLength(); i++){ System.out.println("***************开始遍历第"+(i+1)+"本书的内容***************"); //通过book标签的索引获取节点 Node book = booklist.item(i); //取得节点对应的属性值,可能有一个或者多个属性 NamedNodeMap attrs = book.getAttributes(); //通过getlength()方法可以获取属性的长度,也就是有几个属性 System.out.println("第"+(i+1)+"本书共有"+attrs.getLength()+"个属性"); for(int j=0; j<attrs.getLength(); j++){ //获取节点属性的列表 Node attr = attrs.item(j); //获取节点属性的名称和值 System.out.print("第"+(j+1)+"个属性的名称是:"+attr.getNodeName()+"--->"); System.out.println("它的值为:"+attr.getNodeValue()); } //当已知该标签有一个属性为id时,可以用Element来获取属性及它的值 // //将节点强转为element类型 // Element book = (Element)booklist.item(i); // //通过getAttribute方法获取属性值 // String attrvalue = book.getAttribute("id"); // System.out.println("id属性的值为:"+attrvalue); //获取子节点及其对应的属性值 //获取子节点 NodeList childnodes = book.getChildNodes(); System.out.println("第"+(i+1)+"个节点共有"+ childnodes.getLength()+"个子节点"); //遍历子节点 for(int k=0; k<childnodes.getLength(); k++){ if(childnodes.item(k).getNodeType() == Node.ELEMENT_NODE){ System.out.print("第"+(k+1)+"个子节点的名称是:"+ childnodes.item(k).getNodeName()); //获取子节点的值要先用到getFirstChild()方法,再调用其getValue方法, //否则只能获取到null值 //System.out.println("--->对应的值为:"+childnodes.item(k).getNodeValue()); //System.out.println("--->对应的值为:"+childnodes.item(k).getFirstChild().getNodeValue()); System.out.println("--->对应的值为:"+childnodes.item(k).getTextContent()); } } System.out.println("***************遍历第"+(i+1)+"本书的内容结束***************"); System.out.pri b033 ntln(); } } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树