XML与DOM4J

XML概述
XML:可扩展标记语言,初衷是为了替代html语言,定义了很规范的格式,但是没有达到了最初的期望,后来人们利用这个特点用作于 配置文件 封装数据 文件传输
与html主要区别:

xml区分大小写很敏感,html不区分
文档中有一个CDATA区,会按照纯文本解析

<?xml version="1.0" encoding="UTF-8"?>

<ConnectionAddress.xml>
  <person1 id="i1">
    <name>alice</name>
    <phoneNumber class="c1">77--88-99</phoneNumber>
  </person1>
  <person2 id="i2">
    <name>bob</name>
    <phoneNumber class="c2">89--87-96</phoneNumber>
  </person2>
  <person3 id="i3">
    <name>jack</name>
    <phoneNumber class="c3">65--77--12</phoneNumber>
  </person3>
</ConnectionAddress.xml>

dom4j的基本方法使用

//导入jar包
如图所示,选中jar包右键选中buildPath然后或出现“小奶瓶”
即配置成功
// 创建解析器对象
new SAXReader();
//读取写好的xml文件

SAXReader reader = new SAXReader();
Document doc = reader.read(new FileInputStream(
                    "ConnectionAddress"));

jar包中给我们提供了许多获取xml的方法

获取节点对象
Node node = doc.node(0);
只能获取一个子节点
获取所有的节点
Iterator iterator = doc.nodeIterator();
抽取方法获取所有的节点
getNodes(rootElement);

同理标签和属性一样都有类似方法

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class demo {
    public static void main(String[] args) {
        //导入jar包
        // 创建解析器对象
        SAXReader reader = new SAXReader();
        try {
            // 读取xml文件
            Document doc = reader.read(new FileInputStream(
                    "ConnectionAddress"));
            // 获取根标签
            Element rootElement = doc.getRootElement();
            // 获取所有标签并打印
            List<Element> list = rootElement.elements();
            for (Element e : list) {
                System.out.println(e.getName());
            }
            Iterator<Element> iterator2 = rootElement.elementIterator();
            while(iterator2.hasNext()){
                Element element = iterator2.next();
                System.out.println(element.getName());
            }

            System.out.println("------------");
            // 获取标签属性
            Attribute attribute = rootElement.element("person1").attribute(0);
            System.out.println(attribute.getName()+":"+attribute.getValue());
            //或者通过集合
            List<Attribute> list2 = rootElement.attributes();
            for(Attribute a:list2){
                System.out.println(a.getName()+":"+a.getValue());
            }
            //迭代器
            Iterator<Attribute> iterator = rootElement.attributeIterator();
            while(iterator.hasNext()){
                 Attribute a2 = iterator.next();
                System.out.println(a2.getName()+":"+a2.getValue());
            }

            //获取文本内容    getText() 或者 elementText()
            String name1 = rootElement.element("person1").element("name").getText();
            System.out.println(name1);
            String name2 = rootElement.element("person2").elementText("name");
            System.out.println(name2);

        } catch (FileNotFoundException e) {
            System.out.println("未找到文件");
        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值