zoukankan      html  css  js  c++  java
  • JAVA解析XML文件

     XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM(Document Object Model),DTD(Document Type Definition),SAX(Simple API for XML),XSD(Xml Schema Definition),XSLT(Extensible Stylesheet Language Transformations),具体可参阅w3c官方网站文档http://www.w3.org获取更多信息。

    XML在不同的语言里解析方式都是一样的,只不过实现的语法不同而已。基本的解析方式有两种,一种叫SAX,另一种叫DOM。SAX是基于事件流的解析,DOM是基于XML文档树结构的解析。假设我们XML的内容和结构如下: 

    <?xml version="1.0" encoding="UTF-8"?>
    <employees>
        <employee name="zansan">
            <age>30</age>
    <height>179</height> </employee> <employee name="lisi"> <age>20</age>
    <height>179</height>
    </employee> <employee name="wangwu"> <age>25</age> </employee> </employees> 如此格式 。

     通过传值 我想得到某个employee 里面的参数 ,就需要获取name值,来得到它对应的...代码如下:

    //此处需要处理一个异常。
    File f=new File("D://Program Files (x86)//apache-tomcat-6.0.18//webapps//WaterEnvPlatform//dataTemplate//mailEntry.xml"); DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); DocumentBuilder builder=factory.newDocumentBuilder(); org.w3c.dom.Document doc = builder.parse(f); NodeList nl = doc.getElementsByTagName("employee"); for (int i=0;i < nl.getLength();i++){ Element e=(Element)nl.item(i); String attribute = e.getAttribute("name"); System.out.println(attribute); System.out.println("age:" + doc.getElementsByTagName("age").item(i).getTextContent());//获取到age里面textContent 内容值 }

     生成xml文件:

     1 import java.io.InputStream;
     2 import java.util.List;
     3 
     4 import org.dom4j.Document;
     5 import org.dom4j.DocumentException;
     6 import org.dom4j.Element;
     7 import org.dom4j.io.SAXReader;
     8 
     9 
    10 public class TestXmlDom4J {
    11     public static void main(String[] args) {
    12         try {
    13             //创建SAXReader对象
    14             SAXReader reader=new SAXReader();
    15             //得到XML文件的文件流
    16             InputStream in=TestXmlDom4J.class.getResourceAsStream("test.xml");
    17             //注意:Document对象是org.dom4j包下的Document.通过SAXReader对象的read(InputStream)方法得到Document对象
    18             Document document=reader.read(in);
    19             //获得根元素.注意:Element是org.dom4j包下的Element
    20             Element root=document.getRootElement();
    21             //获得employee元素集合
    22             List<Element> employeeElements=root.elements("employee");
    23             //遍历employeeElements得到属性name的值
    24             for(Element e:employeeElements){
    25                 String name=e.attributeValue("name");
    26                 System.out.println(name);
    27             }
    28             //遍历employeeElements得到age元素的值
    29             for(Element e:employeeElements){
    30                 //得到age元素
    31                 Element a=e.element("age");
    32                 //得到age元素的值
    33                 String age=a.getText();
    34                 System.out.println(age);
    35             }
    36         } catch (DocumentException e) {
    37             // TODO Auto-generated catch block
    38             e.printStackTrace();
    39         }
    40     }
    41 }
  • 相关阅读:
    HDU 5640 King's Cake
    HDU 5615 Jam's math problem
    HDU 5610 Baby Ming and Weight lifting
    WHU1604 Play Apple 简单博弈
    HDU 1551 Cable master 二分
    CodeForces659C Tanya and Toys map
    Codeforces 960E 树dp
    gym 101485E 二分匹配
    Codeforces 961E 树状数组,思维
    Codeforces Round #473 (Div. 2) D 数学,贪心 F 线性基,模板
  • 原文地址:https://www.cnblogs.com/spp0152/p/3421121.html
Copyright © 2011-2022 走看看