前端-xml

前端-xml

  • XML的作用
  • 创建xml文件
  • xml语法
    • 文档说明
    • 元素
    • 属性
    • 注释
    • CDATA、特殊字符
    • xml转义字符
  • dom4j
    • xml解析技术
    • 获取Document对象的三种方式
    • dom4j应用
    • 遍历xml指定元素
    • 指定读取xml元素

 
 
一个XML文件分为如下几部分内容

  1. 文档声明
  2. 元素
  3. 属性
  4. 注释
  5. CDATA区、特殊字符

 
文档声明

  1. XML声明放在XML文档的第一行
  2. version --文档符合XML1.0规范"
  3. encoding --文档字符编码,比如"utf-8
     

元素
1.元素语法要求

  1. 每个XML文档必须有且只有一个根元素
  2. 根元素是一个完全包括文档中其他所有元素的元素
  3. 根元素的起始标记要放在所有其他元素的起始标记之前
  4. 根元素的结束标记要放在所有其他元素的结束标记之后
  5. XML元素指XML文件中出现的标签,一个标签分为开始标签和结束标签,一个标签有如下几种书写形式包含标签体:www.sohu.cn
    不含标签体的:,简写为:
  6. 一个标签中也可以嵌套若干子标签。但所有标签必须合理的嵌套,绝对不允许交叉嵌套
     

xml元素命令规则

  1. 区分大小写,例如,

    是两个不同的标记

  2. 不能以数字开头
  3. 不能包含空格
  4. 名称中间不能包含冒号(:) 。
  5. 如果标签单词需要间隔,建议使用下划线比如hello
     

属性

<Student ID="100">
<Name>TOMName>
Student>

1.属性值用双引号(")或单引号(')分隔(如果属性值中有',用"分隔;有",用'分隔)
2. 一个元素可以有多个属性,它的基本格式为:<元素名属性名=“属性值”>
3. 特定的属性名称在同一个元素标记中只能出现一次
4. 属性值不能包括&I字符
 

注释

  1. 注释内容中不要出现- -
  2. 不要把注释放在标记中间;错误写法>TOM
  3. 注释不能嵌套
  4. 可以在除标记以外的任何地方放注释

 
CDATA、特殊字符
有些内容不想让解析引擎执行,而是当作原始内容处理(即当做普通文本),可以使用CDATA包括起来,CDATA节中的所有字符都会被当作简单文本,而不是XML标记。
1.语法:

<![GDATA[
这里可以把你输入的字符原样显示,不会解析xml
]]>
  1. 可以输入任意字符(除]]>外)
  2. 不能嵌套
     

xml转义字符

转义符 符号
< <
> >
& &
" "
' '
 

格式正规的XML文档

  1. XML声明语句
  2. 必须有且仅有一个根元素
  3. 标记大小,区分大小写的
  4. 属性值用引号
  5. 标记成对
  6. 空标记关闭
  7. 元素正确嵌套

 



1 xml :表示该文件的类型xml
2.version="1.0"版本
3 encoding="UTF-8”文件编码
4. students: root元素/根元素,程序员自己来定
5. 表示students一个子元素,可以有多个
6. id就是属性name , age, gender是student元素的子元素
7.xml也可以被映射成xml dom树(xml文件是树形结构,有层次感)
-->
<students>
    <student>
        <name>张三name>
        <age>18age>
        <gender>gender>
    student>
    <student>
        <name>李四name>
        <age>20age>
        <gender>gender>
    student>
students>

 
 

XML的作用

前端-xml_第1张图片
前端-xml_第2张图片

创建xml文件

前端-xml_第3张图片
前端-xml_第4张图片
前端-xml_第5张图片



1 xml :表示该文件的类型xml
2.version="1.0"版本
3 encoding="UTF-8”文件编码
4. students: root元素/根元素,程序员自己来定
5. 表示students一个子元素,可以有多个
6. id就是属性name , age, gender是student元素的子元素
7.xml也可以被映射成xml dom树(xml文件是树形结构,有层次感)
-->
<students>
    <student>
        <name>张三name>
        <age>18age>
        <gender>gender>
    student>
    <student>
        <name>李四name>
        <age>20age>
        <gender>gender>
    student>
students>

xml语法

前端-xml_第6张图片

文档说明

前端-xml_第7张图片

元素

前端-xml_第8张图片
5.XML元素指XML文件中出现的标签,一个标签分为开始标签和结束标签,一个标签有如下几种书写形式包含标签体:www.sohu.cn
不含标签体的:,简写为:
6.一个标签中也可以嵌套若干子标签。但所有标签必须合理的嵌套,绝对不允许交叉嵌套

在这里插入图片描述
前端-xml_第9张图片

属性

前端-xml_第10张图片



<students>
    <student id="1'0'1">
        <name>张三name>
        <name>王五name>
        <age>18age>
        <gender>gender>
    student>
    <student>
        <name>李四name>
        <age>20age>
        <gender>gender>
    student>
students>

注释

前端-xml_第11张图片

CDATA、特殊字符

前端-xml_第12张图片






<students>
    <student>
        <name>李四name>
        <age>20age>
        <gender>gender>
        <code>
            
            
                 function h(obj){
                 obj.style.behavior='url(#qefault#homepage) ';
                 var a = obj.setHomePage( ' // www.baidu.com/');
                 }
            
            ]]>
        code>
    student>
students>

xml转义字符

前端-xml_第13张图片
前端-xml_第14张图片

dom4j

xml解析技术

在这里插入图片描述
映射成xml dom树后,就可以调用Java dom4j API来使用
前端-xml_第15张图片
上图表示下面的 XML 中的一本书:

<bookstore>
<book category="COOKING">
  <title lang="en">Everyday Italiantitle> 
  <author>Giada De Laurentiisauthor> 
  <year>2005year> 
  <price>30.00price> 
book>
<book category="CHILDREN">
  <title lang="en">Harry Pottertitle> 
  <author>J K. Rowlingauthor> 
  <year>2005year> 
  <price>29.99price> 
book>
<book category="WEB">
  <title lang="en">Learning XMLtitle> 
  <author>Erik T. Rayauthor> 
  <year>2003year> 
  <price>39.95price> 
book>
bookstore>

获取Document对象的三种方式

前端-xml_第16张图片

dom4j应用

前端-xml_第17张图片
前端-xml_第18张图片

    public void loadXML() throws DocumentException {
        //得到一个解析器
        SAXReader reader = new SAXReader();
        Document document = reader.read(new File("src\\students.xml"));
        System.out.println(document);

    }

document --> rootElement --> content --> elementData(xml所有的属性存放在这里) --> 1(代表一个student节点) --> content --> elementData(student节点中所有属性存放在这里) --> 1(name节点) --> content --> text(找到name的值)
前端-xml_第19张图片


<students>
    <student id="01">
        <name>小龙女name>
        <gender>gender>
        <age>16age>
        <resume>古墓派掌门人resume>
    student>
    <student id="02">
        <name>欧阳锋name>
        <gender>gender>
        <age>18age>
        <resume>白驼山,蛤蟆神功resume>
    student>
students>

遍历xml指定元素

    public void listStus() throws DocumentException {
        //得到一个解析器
        SAXReader reader = new SAXReader();
        Document document = reader.read(new File("src\\students.xml"));
        //1. 得到rootElement
        Element rootElement = document.getRootElement();
        //2. 得到rootElement的student Elements
        List<Element> students = rootElement.elements("student");
        for (Element student : students) {
            //获取Student元素的name Element
            Element name = student.element("name");
            Element age = student.element("age");
            Element resume = student.element("resume");
            Element gender = student.element("gender");
            System.out.println("学生姓名= " + name.getText() + " "
                    + "年龄=" + age.getText() + " "
                    + "自我介绍=" + resume.getText() + " "
                    + "性别" + gender.getText());
        }
    }

指定读取xml元素

    public void readOne() throws DocumentException {
        //得到一个解析器
        SAXReader reader = new SAXReader();
        Document document = reader.read(new File("src\\students.xml"));
        //1. 得到rootElement
        Element rootElement = document.getRootElement();
        //2.获得第一个学生
        Element student = (Element) rootElement.elements("student").get(0);
        Element name = student.element("name");
        Element age = student.element("age");
        Element resume = student.element("resume");
        Element gender = student.element("gender");
        //3.输出该信息
        System.out.println("学生姓名= " + name.getText() + " "
                + "年龄=" + age.getText() + " "
                + "自我介绍=" + resume.getText() + " "
                + "性别" + gender.getText());
        //4. 获取student元素的属性
        System.out.println("id=" + student.attributeValue("id"));
    }

你可能感兴趣的:(Java,Web,开发语言,前端,xml)