zoukankan      html  css  js  c++  java
  • XML(eXtensible Markup Language)

    XML


     

    一、XML简介:

    • 1.是一种标记语言
    • 2.xml是一种非常灵活的语言,没有固定的标签,所有标签都可以自定义
    • 3.xml用于信息的记录和传递,经常用于配置文件

    二、XML格式:

    • 1.声明信息,用于描述xml的版本和编码方式      <?xml version="1.0" encoding="UTF-8"?>
    • 2.有且仅有一个根元素
    • 3.大小写敏感
    • 4.标签是成对的,而且要正确嵌套
    • 5.属性值要使用双引号
    • 6.注释       <!-- -->
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!-- 这里是注释 -->
     3 
     4 <books>
     5     
     6     <book id="b01">
     7         <name>java高级编程</name>
     8         <author>李四</author>
     9     </book>
    10     <book id="b02">
    11         <name>java中级编程</name>
    12         <author>王二</author>
    13     </book>
    14     
    15 </books> 

    DTD


     

    一、简介:

    • 1.DTD,document Type Definition ,文档类型定义
    • 2.DTD,用于约束xml的文档格式,保证xml是一个有效的
    • 3.DTD分为两种,内部、外部

    二、内部DTD使用:

    • 1.内部DTD定义:<! DOCTYPE  根元素  [元素声明]>
    • 2.元素声明语法:<!ELEMENT 元素名 (子元素[,子元素....])>
    • 3.数量词:

      +  : 表示出现1次或多次,至少一次

      ? :表示出现0次或1次

       * :表示出现任意次

    • 4.属性声明语法: <!ATTLIST  元素名称  属性名称  属性类型  默认值>

        属性类型: CDATA ,表示字符数据(character  data)

        默认值    :

              -- #REQUIRED , 表示必须出现

                 -- #IMPLIED ,表示不是必须的

    三、带DTD格式的完整XML

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- 声明内部DTD -->
    <!DOCTYPE scores [
        <!ELEMENT scores (student*) >
        <!ELEMENT student (name, course)>
        <!ATTLIST student id CDATA #REQUIRED>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT course (#PCDATA)>
    ]>
    <scores>
        
        <student id="1">
            <name>张三</name>
            <course>java</course>
        </student>
        
        <student id="2">
            <name>王二</name>
            <course>sql</course>
        </student>
        <student id="3">
            <name>李四</name>
            <course>xml</course>
        </student>
    </scores> 

    四、外部DTD使用:

       1.创建一个独立的DTD文件

    <?xml version="1.0" encoding="UTF-8"?>
        <!ELEMENT scores (student*) >
        <!ELEMENT student (name, course)>
        <!ATTLIST student id CDATA #REQUIRED>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT course (#PCDATA)>

    2.在xml中引入外部DTD文件

    <!-- 引入外部DTD文件 -->
    <!DOCTYPE scores SYSTEM "scores.dtd">

     XML解析


     

    一、XML的解析:

    对xml文件进行操作,包括创建xml,对xml文件进行增删改查操作

    • 1.DOM解析:是官方提供的解析方式 , 基于xml树解析的 ;比较耗资源,适用于次访问XML
    • 2.SAX解析:民间解析方式, 基于事件的解析;适用于数据量较大的XML
    • 3.JDOM解析:第三方提供,开源免费解析方式,比DOM解析快
    • 4.DOM4J解析:第三方提供,开源免费,JDOM升级版

    二、DOM4J解析XML

    /**
     * 解析xml文件
     * @author Administrator
     *
     */
    public class TestXml {
        public static void main(String[] args) throws Exception {
            //1.创建SAXReader对象,用于读取xml文件
            SAXReader reader = new SAXReader();
            //2.读取xml文件,得到Document对象
            Document doc = reader.read(new File("src/scores.xml"));
            //3.获取根元素
            Element root = doc.getRootElement();
            //4.获取根元素下所有子元素
            Iterator<Element> it = root.elementIterator();
            while(it.hasNext()) {
                //取出元素
                Element e = it.next();
                System.out.println(e.getName());
                //获取id属性
                Attribute id = e.attribute("id");
                System.out.println(id.getName()+"="+id.getValue());
                //获取子元素
                Element name = e.element("name");
                Element course = e.element("course");
                //打印
                System.out.println(name.getName()+"="+name.getStringValue());
                System.out.println(course.getName()+"="+course.getText());
                System.out.println("------------");
            }
        }
    }

     

    三、生成XML文件:

    /**
     * 生成xml文件
     * @author Administrator
     *
     */
    public class TestXml2 {
        public static void main(String[] args) throws Exception {
            //1.通过DocumentHelper生成一个Document对象
            Document doc = DocumentHelper.createDocument();
            //2.添加并得到根元素
            Element root = doc.addElement("books");
            //3.为根元素添加子元素
            Element book = root.addElement("book");
            //4.为book元素添加属性
            book.addAttribute("id", "1");
            //5.为book添加子元素
            Element name = book.addElement("name");
            Element author = book.addElement("author");
            //6.为元素添加文本
            name.addText("java高级");
            author.addText("张三");
            //7.输入
            OutputFormat format = OutputFormat.createPrettyPrint();
            XMLWriter writer = new XMLWriter(new FileWriter(new File("src/book2.xml")),format);
            writer.write(doc);
            //释放资源
            writer.close();
            
        }
    }
  • 相关阅读:
    Jmeter命令行运行实例讲解
    ab压力测试工具
    F12找到页面某一元素所绑定的点击事件
    F12修改html进行本地js操作页面元素
    JMeter中利用Parameters 和Body Data传递参数有什么不同
    centos7 VNC安装
    centos7安装python3
    linux du命令的疑惑
    centos cgroup配置
    linux下postgres未能正常启动的解决过程
  • 原文地址:https://www.cnblogs.com/lhl0131/p/12419625.html
Copyright © 2011-2022 走看看