JAVA读取xml文件

本文介绍了一个使用Java从XML文件中读取数据的示例程序。程序通过DocumentBuilderFactory和DocumentBuilder解析XML,并展示了如何获取XML文件的根元素、属性及子节点等内容。
  1. 一.java类

  2. package com.java.test;   
  3.  
  4. import org.w3c.dom.*;   
  5. import javax.xml.parsers.*;   
  6. import java.io.*;   
  7.  
  8. public class JavaReadXml   
  9. // Document可以看作是XML在内存中的一个镜像,那么一旦获取这个Document 就意味着可以通过对   
  10. // 内存的操作来实现对XML的操作,首先第一步获取XML相关的Document   
  11. private Document doc null  
  12.  
  13. public void init(String xmlFile) throws Exception   
  14. // 很明显该类是一个单例,先获取产生DocumentBuilder工厂   
  15. // 的工厂,在通过这个工厂产生一个DocumentBuilder,   
  16. // DocumentBuilder就是用来产生Document的   
  17. DocumentBuilderFactory dbf DocumentBuilderFactory.newInstance();   
  18. DocumentBuilder db dbf.newDocumentBuilder();   
  19. // 这个Document就是一个XML文件在内存中的镜像   
  20. doc db.parse(new File(xmlFile));   
  21.   
  22.  
  23. // 该方法负责把XML文件的内容显示出来   
  24. public void viewXML(String xmlFile) throws Exception   
  25. this.init(xmlFile);   
  26. // 在xml文件里,只有一个根元素,先把根元素拿出来看看   
  27. Element element doc.getDocumentElement();   
  28. System.out.println("根元素为:" element.getTagName());   
  29.  
  30. NodeList nodeList doc.getElementsByTagName_r("person");   
  31. System.out.println("book节点链的长度:" nodeList.getLength());   
  32.  
  33. Node fatherNode nodeList.item(0);   
  34. System.out.println("父节点为:" fatherNode.getNodeName());   
  35.  
  36. // 把父节点的属性拿出来   
  37. NamedNodeMap attributes fatherNode.getAttributes();   
  38.  
  39. for (int 0attributes.getLength(); i++)   
  40. Node attribute attributes.item(i);   
  41. System.out.println("person的属性名为:" attribute.getNodeName() 
  42. 相对应的属性值为:" attribute.getNodeValue());//原作者这块写的是book的属性名,经调试应该是person的   
  43.   
  44.  
  45. NodeList childNodes fatherNode.getChildNodes();   
  46. System.out.println(childNodes.getLength());   
  47. for (int 0childNodes.getLength(); j++)   
  48. Node childNode childNodes.item(j);   
  49. // 如果这个节点属于Element ,再进行取值   
  50. if (childNode instanceof Element)   
  51. // System.out.println("子节点名为:"+childNode.getNodeName()+"相对应的值为"+childNode.getFirstChild().getNodeValue());   
  52. System.out.println("子节点名为:" childNode.getNodeName()   
  53. "相对应的值为" childNode.getFirstChild().getNodeValue());   
  54.   
  55.   
  56.  
  57.   
  58.  
  59. public static void main(String[] args) throws Exception   
  60. JavaReadXml parse new JavaReadXml();   
  61.  
  62. // 我的XML文件   
  63. parse.viewXML("person.xml");   
  64.   
  65.  
  66. 二.xml文件

    1. <?xml version="1.0" encoding="UTF-8"?>   
    2. <book>   
    3. <person>   
    4. <first>wang</first>   
    5. <last>laohu</last>   
    6. <age>25</age>   
    7. <version>中国邮电出版社</version>   
    8. </person>   
    9. <person>   
    10. <first>li</first>   
    11. <last>junjia</last>   
    12. <age>24</age>   
    13. <version>清华大学出版社</version>   
    14. </person>   
    15. </book> 
    16. 三.输出结果

      根元素为:book
      book节点链的长度:2
      父节点为:person
      9
      子节点名为:first相对应的值为wang
      子节点名为:last相对应的值为laohu
      子节点名为:age相对应的值为25
      子节点名为:version相对应的值为中国邮电出版社

       
     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值