XML学习重点

结构

固定格式:<?xml version="1.0" encoding="UTF-8" ?> 
               代表XML的版本  当前文件的编码  
元素(Element)也称为标签(Tag),标记(Node)
a.标签的组成: <开始标签>标签体</结束标签>
b.标签体: i.空  ii.一串文本  iii.还是标签 
c.如果标签体为空,也称为空标签,空标签可以这么写:<标签/>(自闭合标签)  
d.元素名:
    i.元素名区分大小写
    ii.元素名不要使用特殊符号
    iii.不建议使用XML相关的开头    
e.一个标准的XML应该只有一个根标签  
     <?xml version="1.0" encoding="UTF-8" ?>
        <ps>
            <person id="10086">
                <name>jack</name>
                <age>20</age>
            </person>

            <person id="10010">
                <name>rose</name>
                <age>30</age>
            </person>
        </ps>
1.属性是元素的一部分,它必须出现在元素的开始标签中;
2.属性的定义格式:属性名="属性值",其中属性值必须是''或者""引起来
3.一个标签的属性可以是任意个,多个属性直接使用空格隔开,但是不能出现同名的属性 
4.属性名不能使用特殊符号,必须以字母开头
    格式:
        <a id="002"></>
<!-- 
  注释内容 
  注释内容 
-->
<   &lt;
>   &gt;
"   &quot;
'   &apos;
&   &amp;
当XML中出现以上几个特殊字符时,我们建议使用转译字符代替
假设出现了大量需要转译的字符,我们不需要挨个转译,只需要将这些内容放到CDATA区中即可
<![CDATA[
    写大量需要转译的字符
]]> 
Dom4j的基本使用
public class Dom4JDemo {
    public static void main(String[] args) throws DocumentException {
        //1.读取XML的核心类
        SAXReader reader = new SAXReader();
        Document document = reader.read(Dom4JDemo.class.getResourceAsStream("/books.xml"));
        //2.获取根元素
        Element rootElement = document.getRootElement();
        System.out.println("根元素:" + rootElement.getName());
        //3.获取根元素的子元素
        List<Element> list = rootElement.elements();
        //4.遍历集合
        for (Element element : list) {
            System.out.println("子元素:" + element.getName());
            //5.获取属性
            String id = element.attributeValue("id");
            System.out.println("属性id = " + id);
            //6.获取子子元素
            List<Element> elements = element.elements();
            //7.遍历
            for (Element ele : elements) {
                System.out.println("子子元素名字:"+ele.getName());
                //8.获取子子元素的文本
                System.out.println("子子元素内容:"+ele.getText());
            }
        }
    }
}
Dom4J结合XPath解析XML
a.导入jar包(2个jar包,资料中有)
b.使用SaxReader读取xml文件
c.使用API和Xpath结合,快速获取结点
    public List selectNodes("Xpath表达式");获取符合表达式的元素集合
    public Element selectSingleNode("Xpath表达式") 获取符合表达式的唯一元素

1. 绝对路径表达式方式 例如: /元素/子元素/子子元素...
2. 相对路径表达式方式 例如: 子元素/子子元素.. 或者 ./子元素/子子元素..
3. 全文搜索路径表达式方式 例如: //子元素//子子元素
4. 谓语(条件筛选)方式 例如: //元素[@attr1=value]

   a.SaxReader 读取XML文件,并解析生成Document对象
   b.Document  就代表XML解析后的文档对象
   c.Element 就代表XML的标签/元素 
        public List<Element> elements([String elementName]);
                                        //获取当前标签所有[指定名字]的子标签
        public Element element([String elementName]);//获取当前标签的第一个指定名字子标签
        public String getName(); //获取当前标签名字
        public String getText(); //获取当前标签w文本内容
        public String attributeValue(String attributeName);//根据属性名获取当前标签的属性值
//获取id为0002的指定book元素的子标签name的内容
public class Dom4JDemo02 {
    public static void main(String[] args) throws DocumentException {
        //1.读取XML的核心类
        SAXReader reader = new SAXReader();
        Document document = reader.read(Dom4JDemo02.class.getResourceAsStream("/books.xml"));
        //2.获取id为0002的指定book元素的子标签name的内容
        Element element = (Element) document.selectSingleNode("//book[@id=0002]");
        //3.获取子标签name
        Element nameEle = element.element("name");
        System.out.println(nameEle.getText());
        //System.out.println(element.elementText("name"));
    }
}

 

posted @ 2020-07-06 11:09  一半人生  阅读(167)  评论(0编辑  收藏  举报