zoukankan      html  css  js  c++  java
  • 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"));
        }
    }
  • 相关阅读:
    c++ stl vector的push_back和emplace_back
    整数模n加法群和乘法群
    分享一下 jpeg的压缩算法总结
    利用位运算转换大小写
    java 作业题8
    java 作业题7
    uni-app开发经验分享二十二: uni-app大转盘思路解析
    微信小程序、微信公众号、H5之间相互跳转
    JS闭包的理解
    js原型详解
  • 原文地址:https://www.cnblogs.com/xiaozhang666/p/13253781.html
Copyright © 2011-2022 走看看