搜索
首页后端开发XML/RSS教程带你深入了解XML

带你深入了解XML

Apr 26, 2017 am 10:12 AM

1、XML : extensible markup language 可扩展标记语言 version="1.0"

  • 可扩展:所有的标签都是自定义的

  • 功能:数据存储

    • 配置文件

    • 数据传输

  • html 与 xml 区别

    • HTML语法松散,xml语法严格

    • html做页面展示,xml做数据存储

    • Html所有标签都是预定义的,xml所有标签都是自定义的

2、xml语法:

  • 文档声明

    • version 版本号 固定值1.0

    • encoding 指定文档的码表 默认值为iso-8859-1

    • standalone 指定文档是否独立 yes 或 no

    • 必须写在xml文档的第一行

    • 写法:8d78aa6aa01dc9bf77de63074feb2293

    • 属性

  • 元素 xml文档中的标签

    • 元素名称区分大小写

    • 数字不能开头

    • 文档中必须有且只能有一个根元素

    • 元素需要正确闭合 6c04bd5ca3fcae76e30b72ad730ca86d36cc49f0c466276486e50c850b7e4956 076402276aae5dbec7f672f8f4e5cc81

    • 元素需要正确嵌套

    • 元素名称要遵守

  • 文本

    • 70cec81b2be067f3c87df6a249b1ec9e

    • 转义字符 >;

    • CDATA 里边的数据会原样显示

  • 属性

    • 属性值必须用引号引起来,单双引号都行

  • 注释

    • 19791207a4e0a22c816ac020ecd8cae0

  • 处理指令:现在基本不用

    • ecb56876e6a19d3cc2d0b356114cfd2b

3、XML约束

  • 约束就是xml的书写规则

  • 约束的分类:

    • 导入xsd约束文档

    • 编写根标签

    • 引入实例名称空间 xmlns:xsi="www.w3.org/2001/XMLSchema-instance"

    • 引入名称空间 xsi:schemaLocation="www.itcast.cn/xml student.xsd"

    • 引入默认的名称空间

    • student.xsd

    • student.xml

    • <?xml version="1.0"?>
      <xsd:schema xmlns="www.itheima.cn/xml"
              xmlns:xsd="www.w3.org/2001/XMLSchema"
              targetNamespace="www.itheima.cn/xml" elementFormDefault="qualified">
          <xsd:element name="students" type="studentsType"/>
          <xsd:complexType name="studentsType">
              <xsd:sequence>
                  <xsd:element name="student" type="studentType" minOccurs="0" maxOccurs="unbounded"/>
              </xsd:sequence>
          </xsd:complexType>
          <xsd:complexType name="studentType">
              <xsd:sequence>
                  <xsd:element name="name" type="xsd:string"/>
                  <xsd:element name="age" type="ageType" />
                  <xsd:element name="sex" type="sexType" />
              </xsd:sequence>
              <xsd:attribute name="number" type="numberType" use="required"/>
          </xsd:complexType>
          <xsd:simpleType name="sexType">
              <xsd:restriction base="xsd:string">
                  <xsd:enumeration value="male"/>
                  <xsd:enumeration value="female"/>
              </xsd:restriction>
          </xsd:simpleType>
          <xsd:simpleType name="ageType">
              <xsd:restriction base="xsd:integer">
                  <xsd:minInclusive value="0"/>
                  <xsd:maxInclusive value="256"/>
              </xsd:restriction>
          </xsd:simpleType>
          <xsd:simpleType name="numberType">
              <xsd:restriction base="xsd:string">
                  <xsd:pattern value="itheima_\d{4}"/>
              </xsd:restriction>
          </xsd:simpleType>
      </xsd:schema>
      <?xml version="1.0" encoding="UTF-8" ?>
    • 53ba2784f3b324149ed16e0392d39c48

    • <students
          xmlns="www.itheima.cn/xml"
          xsi:schemaLocation="www.itheima.cn/xml student.xsd"
          xmlns:xsi="www.w3.org/2001/XMLSchema-instance"
      >
          <student number="itheima_1001">
              <name>asfd</name>
              <age>12</age>
              <sex>male</sex>
          </student>
      </students>
      <students
          xmlns:itheima="www.itheima.cn/xml"
          xsi:schemaLocation="www.itheima.cn/xml student.xsd"
          xmlns:xsi="www.w3.org/2001/XMLSchema-instance"
      >
          <itheima:student number="itheima_1001">
              <itheima:name>asfd</itheima:name>
              <itheima:age>12</itheima:age>
              <theima:sex>male</itheima:sex>
          </itheima:student>
      </itheima:students>
    • 内部dtd 在xml内部定义dtd

    • 外部dtd 在外部文件中定义dtd

    • Student.dtd

    • student.xml

    • 本地dtd文件 631b10dec1b2e0be17e489fb90edae6d

    • 网络dtd文件 bc84f77157698c30bad08ae96ed06d5d

    • <!ELEMENT students (student*) >
      <!ELEMENT student (name,age,sex)>
      <!ELEMENT name (#PCDATA)>
      <!ELEMENT age (#PCDATA)>
      <!ELEMENT sex (#PCDATA)>
      <!ATTLIST student number ID #REQUIRED> 唯一的,必须的
      <?xml version="1.0" encoding="UTF-8" ?>
      <!DOCTYPE students SYSTEM  "student.dtd">
      <students>
          <student number="s0001" >
              <name>zs</name>
              <age>abc</age>
              <sex>yao</sex>
          </student>
      </students>
    • dtd  约束不严谨

    • schema

4、XML解析

  • 解析XML可以做:

    • 如果xml作为配置文件:读取

    • 如果xml作为传输文件:写、读

  • XML解析思想:

    • 优点:不占内存,速度快

    • 缺点:只能读取,不能回写

    • 优点:因为在内存中会形成dom树,可以对dom树进行增删改查

    • 缺点:dom树非常占内存,解析速度慢

    • Document Element Text Attribute Comment

    • DOM:将文档加载到内存,形成一棵dom树(document对象),将文档的各个组成部分封装为一些对象

    • SAX:逐行读取,基于事件驱动

  • xml常用的解析器

    • 定义了一种规则

    • 使用方法

    • 使用步骤

    • XPath:

    • public classTestXPath2 {
            @Test
            publicvoidtest()throwsException{
                  SAXReaderread= new SAXReader();
                  Documentdocument= read.read("src/Dom4jTest.xml");
                  Listnodes= document.selectNodes("/bookstore//book/title");
                  for(inti= 0;i< nodes.size();i++) {
                        Nodenode= (Node)nodes.get(i);
                        System.out.println(node.getText());
                  }
            }
      }
    • selectSingleNode()

    • selectNodes()

    • 注意:要导包 jaxen...jar

    • 创建解析器 SAXReader reader = new SAXReader()

    • 解析xml 获得document对象 Document document = reader.read(url)

    •         //    nodename 选取此节点。

    •         //    /     从根节点选取。

    •         //    //     从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。

    •         //    ..     选取当前节点的父节点。

    •         //    @     选取属性。

    •         //      [@属性名]    属性过滤

    •         //      [标签名]     子元素过滤

    •       @Test

            //遍历所有元素节点

    •  publicvoidtest2()throwsException{
                  //创建一个xml解析对象
                  SAXReaderreader= new SAXReader();
                  //把xml文档加载到document对象中
                  Documentdocument= reader.read("src/Book.xml");
                  Elementroot= document.getRootElement();
                  treeWalk(root);
            }
            
            privatevoidtreeWalk(Elementele){
                  //输出当前节点的名字
                  System.out.println(ele.getName());
                  //ele.nodeCount()得到当前节点的所有子节点的数量
                  for(inti= 0;i<ele.nodeCount();i++){
                        //取出下标为i的节点
                        Nodenode= ele.node(i);
                        //判断当前节点是否为标签
                        if(nodeinstanceofElement){
                              //把node强转为标签(Element)
                              treeWalk((Element)node);
                        }
                  }
            }
      }
    • public classTestDom4j {
            @Test
            publicvoidtest1()throwsException{
                  //创建一个xml解析对象
                  SAXReaderreader= new SAXReader();
                  //把xml文档加载到document对象中
                  Documentdocument= reader.read("src/Book.xml");
                  Elementroot= document.getRootElement();
      //          Element bookNode = root.element("书");
      //          System.out.println(bookNode.getName());
                  //得到当前节点所有的子节点
                  Listlist= root.elements();
                  //得到第二本书对象
                  ElementsecondBook= (Element)list.get(1);
                  //得到当前节点的文本内容
                  Stringname= secondBook.element("书名").getText();
                  System.out.println(name);
            }
    • 导入jar包 dom4j.jar

    • 创建解析器

    • 解析xml 获得document对象

    • SAXReader reader = new SAXReader()

    • Document document = reader.read(url)

    • JAXP sun公司提供的解析 支持dom和sax

    • JDOM

    • DOM4J dom for java民间方式,但是是事实方式,非常好,支持dom

    • 解析xml

    • XPATH 专门用于查询

以上是带你深入了解XML的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
XML中的RSS:解码标签,属性和结构XML中的RSS:解码标签,属性和结构Apr 24, 2025 am 12:09 AM

RSS是一种基于XML的格式,用于发布和订阅内容。RSS文件的XML结构包括根元素、元素和多个元素,每个代表一个内容条目。通过XML解析器读取和解析RSS文件,用户可以订阅并获取最新内容。

XML在RSS中的优势:技术深度潜水XML在RSS中的优势:技术深度潜水Apr 23, 2025 am 12:02 AM

XML在RSS中具有结构化数据、可扩展性、跨平台兼容性和解析验证的优势。1)结构化数据确保内容的一致性和可靠性;2)可扩展性允许添加自定义标签以适应内容需求;3)跨平台兼容性使其在不同设备上无缝工作;4)解析和验证工具确保Feed的质量和完整性。

XML中的RSS:揭示内容联合的核心XML中的RSS:揭示内容联合的核心Apr 22, 2025 am 12:08 AM

RSS在XML中的实现方式是通过结构化的XML格式来组织内容。1)RSS使用XML作为数据交换格式,包含频道信息和项目列表等元素。2)生成RSS文件需按规范组织内容,发布到服务器供订阅。3)RSS文件可通过阅读器或插件订阅,实现内容自动更新。

超越基础:高级RSS文档功能超越基础:高级RSS文档功能Apr 21, 2025 am 12:03 AM

RSS的高级功能包括内容命名空间、扩展模块和条件订阅。1)内容命名空间扩展RSS功能,2)扩展模块如DublinCore或iTunes添加元数据,3)条件订阅根据特定条件筛选条目。这些功能通过添加XML元素和属性实现,提升信息获取效率。

XML主链:RSS提要如何结构XML主链:RSS提要如何结构Apr 20, 2025 am 12:02 AM

rssfeedsusexmltoStructureContentUpdates.1)xmlProvidesHierarchicalStructurefordata.2)theelementDefinestHefEed'sIdentityAndContainsElements.3)ElementsRementsRementsRepresSentividividividualContentpieces.4)rsssissisexisextensible,允许custemements.5)5)

RSS和XML:了解Web内容的动态二重奏RSS和XML:了解Web内容的动态二重奏Apr 19, 2025 am 12:03 AM

RSS和XML是用于网络内容管理的工具。RSS用于发布和订阅内容,XML用于存储和传输数据。它们的工作原理包括内容发布、订阅和更新推送。使用示例包括RSS发布博客文章和XML存储书籍信息。

RSS文档:Web联合组织的基础RSS文档:Web联合组织的基础Apr 18, 2025 am 12:04 AM

RSS文档是基于XML的结构化文件,用于发布和订阅频繁更新的内容。它的主要作用包括:1)自动化内容更新,2)内容聚合,3)提高浏览效率。通过RSSfeed,用户可以订阅并及时获取来自不同来源的最新信息。

解码RSS:内容提要的XML结构解码RSS:内容提要的XML结构Apr 17, 2025 am 12:09 AM

RSS的XML结构包括:1.XML声明和RSS版本,2.频道(Channel),3.条目(Item)。这些部分构成了RSS文件的基础,允许用户通过解析XML数据来获取和处理内容信息。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境