Web—08:XML

一、XML常用解析方式:

  • DOM
  • SAX
<?xml version="1.0" encoding="utf-8?>
<stu id="123">
    <name>张三</name>
    <age>18</age>
</stu>

DOM(document object model):即文档对象模型。把整个xml全部读到内存中,形成树状结构。整个文档称之为document对象,属性对应Attribute对象,所有元素结点对应Element对象,文本也可以称之为Text对象,以上所有对象都可以称之为Node节点,如果xml特别大,那么将会造成内存溢出。可以对文档进行增删操作。

SAX(Simple API for XML):基于事件驱动,读取一行,解析一行。不会造成内存溢出。不可进行增删,只能查询。

 

针对上面两种解析方式提供的API

  • jaxp :比较繁琐
  • jdom
  • dom4j :jdom的升级版,使用比较广泛。

 

 


二、Dom4j 的基本用法

element.element("stu");   //返回该元素下的第一个stu元素
element.elements();   //返回该元素下的所有子元素。
  1. 创建SaxReader对象
  2. 指定解析的xml
  3. 获取根元素。
  4. 根据根元素获取子元素或者下面的子孙元素
try {
    //1. 创建sax读取对象
    SAXReader reader = new SAXReader(); //jdbc -- classloader
    //2. 指定解析的xml源
    Document  document  = reader.read(new File("src/xml/stus.xml"));

    //3. 得到元素、
    //得到根元素
    Element rootElement= document.getRootElement();

    //获取根元素下面的子元素 age
//rootElement.element("age") 
    //System.out.println(rootElement.element("stu").element("age").getText());


    //获取根元素下面的所有子元素 。 stu元素
    List<Element> elements = rootElement.elements();
    //遍历所有的stu元素
    for (Element element : elements) {
        //获取stu元素下面的name元素
        String name = element.element("name").getText();
        String age = element.element("age").getText();
        String address = element.element("address").getText();
        System.out.println("name="+name+"==age+"+age+"==address="+address);
    }

} catch (Exception e) {
    e.printStackTrace();
}

 

 


三、Dom4j 的 Xpath使用

dom4j里面支持Xpath的写法。 xpath其实是xml的路径语言,支持我们在解析xml的时候,能够快速的定位到具体的某一个元素。

  1. 添加jar包依赖 :jaxen-1.1-beta-6.jar
  2. 在查找指定节点的时候,根据XPath语法规则来查找
  3. 后续的代码与以前的解析代码一样。
    //要想使用Xpath, 还得添加支持的jar 获取的是第一个 只返回一个。 
    Element nameElement = (Element) rootElement.selectSingleNode("//name");
    System.out.println(nameElement.getText());


    System.out.println("----------------");

    //获取文档里面的所有name元素 
    List<Element> list = rootElement.selectNodes("//name");
    for (Element element : list) {
        System.out.println(element.getText());
    }

 


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值