欢迎光临
我们一直在努力

XML文件

1 XML文件概述

XML是可扩展的标记语言,意思是它是由一些标签组成的,而这些标签是自己定义的。本质上一种数据格式,可以用来表示复杂的数据关系。

XML文件有如下的特点:

  • XML中的<标签名> 称为一个标签或者一个元素,一般是成对出现的。

  • XML中的标签名可以自己定义(可扩展),但是必须要正确的嵌套

  • XML中只能有一个根标签。

  • XML标签中可以有属性

  • XML必须第一行有一个文档声明,格式是固定的<?xml version="1.0" encoding="UTF-8"?>

  • XML文件必须是以.xml为后缀结尾

<!– 注释:以上抬头声明必须放在第一行,必须有 –>
<!–  根标签只能有一个 –>
<users>
    <user id="1" desc="第一个用户">
        <name>柳岩</name>
        <sex>女</sex>
        <地址> 湖南 </地址>
        <password>123456</password>
        <data> 3 &lt; 2 &amp;&amp; 5 > 4 </data>
        <data1>
            <![CDATA[
                3 < 2 && 5 > 4
            ]]>
        </data1>
    </user>
    <people>很多人</people>
    <user id="2">
        <name>宝强</name>
        <sex>男</sex>
        <地址>保定</地址>
        <password>123456</password>
        <data> 3 &lt; 2 &amp;&amp; 5 > 4 </data>
        <data1>
            <![CDATA[
                3 < 2 && 5 > 4
            ]]>
        </data1>
    </user>
</users>

上面XML文件中的数据格式是最为常见的,标签有属性、文本、还有合理的嵌套。

XML文件中除了写以上的数据格式之外,还有一些特殊的字符不能直接写。

– 像 `<,>,& `等这些符号不能出现在标签的文本中,因为标签格式本身就有<>,会和标签格式冲突。

  如果标签文本中有这些特殊字符,需要用一些占位符代替。

  ```txt
  &lt;  表示 <
  &gt;  表示 >
  &amp; 表示 &
  &apos; 表示 '
  &quot; 表示 "
  ```

  ```xml
  <data> 3 &lt; 2 &amp;&amp; 5 &gt; 4 </data>
  ```

– 如果在标签文本中,出现大量的特殊字符,不想使用特殊字符,此时可以用CDATA区,格式如下

  ```xml
  <data1>
      <![CDATA[
             3 < 2 && 5 > 4
      ]]>
  </data1>
  ```

2 XML解析1

public class Dom4JTest {
    public static void main(String[] args) throws Exception {
        // 1. 创建一个Dom4J框架提供的解析器对象
        SAXReader saxReader = new SAXReader();

        // 2. 使用saxReader对象把需要解析的XML文件读成一个Document对象。
        Document document =
                saxReader.read("day13_properties_xml\\\\src\\\\helloworld.xml");

        // 3. 从文档对象中解析XML文件的全部数据了
        Element root = document.getRootElement();
        System.out.println(root.getName());
    }
}

3 XML解析2

 public static void main(String[] args) throws Exception {
        // 1. 创建一个Dom4J框架提供的解析器对象
        SAXReader saxReader = new SAXReader();

        // 2. 使用saxReader对象把需要解析的XML文件读成一个Document对象。
        Document document =
                saxReader.read("day13_properties_xml\\\\src\\\\helloworld.xml");

        // 3. 从文档对象中解析XML文件的全部数据了
        Element root = document.getRootElement();
        System.out.println(root.getName());

        // 4. 获取根元素下的全部一级子元素。
        // List<Element> elements = root.elements();
        List<Element> elements = root.elements("user");
        for (Element element : elements) {
            System.out.println(element.getName());
        }

        // 5. 获取当前元素下的某个子元素。
        Element people = root.element("people");
        System.out.println(people.getText());

        // 如果下面有很多子元素user,默认获取第一个。
        Element user = root.element("user");
        System.out.println(user.elementText("name"));

        // 6. 获取元素的属性信息
        System.out.println(user.attributeValue("id")); // 1
        Attribute id = user.attribute("id");
        System.out.println(id.getName()); // id
        System.out.println(id.getValue()); // 1

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

        // 获取所有的属性
        List<Attribute> attributes = user.attributes();
        for (Attribute attribute : attributes) {
            System.out.println(attribute.getName() + "=" + attribute.getValue());
        }

        // 7. 如何获取全部的文本内容:获取当前元素下的子元素文本值
        System.out.println(user.elementText("name"));
        System.out.println(user.elementText("地址"));
        System.out.println(user.elementTextTrim("地址")); // 取出文本去除前后空格
        System.out.println(user.elementText("password"));

        Element data = user.element("data");
        System.out.println(data.getText());
        System.out.println(data.getTextTrim()); // 取出文本去除前后空格
    }
}

赞(0)
未经允许不得转载:171主机测评 » XML文件
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址