• XML入门教程(XML这样学)


    前言:“与其每天担心未来,不如努力现在。别对自己丧失信心,成长的路上,只有奋斗才能给你最大的安全感。”
    你好,我是梦阳辰!下面和我一起学习XML吧!

    在这里插入图片描述

    01.XML概述

    1.什么是XML?
    XML (eXtensible Markup Language)指可扩展标记语言,标准通用标记语言的子集,简称XML。是一种用于标记电子文件使其具有结构性的标记语言。

    XML 指可扩展标记语言(EXtensible Markup Language)
    XML 是一种标记语言,很类似 HTML
    XML 的设计宗旨是传输数据,而非显示数据
    XML 标签没有被预定义。您需要自行定义标签。
    XML 被设计为具有自我描述性。
    XML 是 W3C 的推荐标准

    xml是一种非常灵活的语言,没有固定的标签,所有的标签都可以自定义。

    2.XML的用途?
    通常,xml被用于信息的记录和传递,因此xml经常被用于充当配置文件。

    3.XML 仅仅是纯文本
    XML 没什么特别的。它仅仅是纯文本而已。有能力处理纯文本的软件都可以处理 XML。

    不过,能够读懂 XML 的应用程序可以有针对性地处理 XML 的标签。标签的功能性意义依赖于应用程序的特性。

    4.xml的格式
    在这里插入图片描述

    //1.声明信息,用户描述xml的版本和编码方式
    <?xml version="1.0" encoding="UTF-8?>
    //2.根元素,有且仅有一个根元素
    //3.xml大小写敏感
    //4.标签成对,需要正确嵌套
    //5.属性只要使用双引号
    <book id="fa">
    //注释的语法跟HTML相同
    
    

    5.XML 不会替代 HTML,理解这一点很重要。在大多数 web 应用程序中,XML 用于传输数据,而 HTML 用于格式化并显示数据。
    XML 无所不在。XML 是各种应用程序之间进行数据传输的最常用的工具,并且在信息存储和描述领域变得越来越流行。
    对 XML 最好的描述是:

    XML 是独立于软件和硬件的信息传输工具。

    6.XML 没有预定义的标签

    在 HTML 中使用的标签(以及 HTML 的结构)是预定义的。HTML 文档只使用在 HTML 标准中定义过的标签(比如 < p > 、< h1 > 等等)。

    XML 允许创作者定义自己的标签和自己的文档结构。

    练习:

    <?xml version="1.0" encoding="UTF-8"?>
    <scores>
    	<student id="1">
    		<name>MengYangChen</name>
    		<course>xml</course>
    		<score>99</score>
    	</student>
    		<name>XingKong</name>
    		<course>xml</course>
    		<score>99.9</score>
    	<student id="2">
    	</student>
    </scores>
    

    8.有效的XML文档
    7.1 首先必须是格式良好的。
    7.2 使用DTD和XSD(XML Schema)定义约束。
    在这里插入图片描述

    02.DTD

    1.什么是DTD?
    文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。

    DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。
    DTD(Document Type Defination )文档类型定义。
    DTD用于约束xml的文档格式,保证xml是一个有效的xml。
    2.DTD可以分为两种,内部DTD,外部DTD。

    2.内部DTD的定义
    假如 DTD 被包含在您的 XML 源文件中,它应当通过下面的语法包装在一个 DOCTYPE 声明中:

    <!DOCTYPE 根元素 [元素声明]>
    

    数量词
    +: 表示出现1次或多次,至少一次。

    ?:表示出现0次或1次。

    *: 表示出现任意次。

    2.1.元素声明语法

    <!ELEMENT 元素名称 (元素内容)>
    

    2.2.属性声明语法
    属性类型:CDATA,表示字符数据(character data)
    默认值:REQUIRED 属性值是必需的
    #IMPLIED 属性不是必需的
    #FIXED value 属性值是固定的

    <!ATTLIST 元素名称 属性名称 属性类型 默认值>
    如:<!ATTLIST payment type CDATA "check">
    
    <?xml version="1.0" encoding="UTF-8"?>
    <!--声明内部DTD-->
    <!DOCTYPE scores[
    <!ELEMENT scores (student)>
    <!ELEMENT stuent(name,course,score)>
    <!ATTLIST stuent id CDATA #IMPLIED>
    <!ELEMENT  name (#PCDATA)>
    ]>
    <scores>
    	<student id="1">
    		<name>MengYangChen</name>
    		<course>xml</course>
    		<score>99</score>
    	</student>
    		<name>XingKong</name>
    		<course>xml</course>
    		<score>99.9</score>
    	<student id="2">
    	</student>
    </scores>
    

    2.3 外部定义DTD
    在xml中引入外部的DTD文件。

    <!DOCTYPE scores SYSTEM "scores.dtd">
    

    关于XSD
    XML Schema是DTD的替代者。
    不仅可以定义XML文档的结构,还可以规范文档的内容。

    03.XML的解析

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

    3.1 常见的xml解析技术

    DOM解析
    官方提供的解析方式(sun)
    基于xml树解析。

    SAX解析
    是民间解析方式,基于事件的解析
    适用于数据量较大的XML.

    JDOM解析
    开放源码,比DOM更快,使用类

    DOM4J解析
    第三方,开源免费,是JDOM的升级版,使用接口

    3.2 DOM4J解析xml
    解析xml的入口,是需要先拿到一个Document对象。
    读取xml文件
    1.导入dom4j.jar包
    2.编写程序
    在这里插入图片描述
    在这里插入图片描述

    dom4j创建xml

    1.通过DocumentHelper生成一个Document对象。
    Document doc =DocumentHelper.createDocument();

    2.添加根元素
    Element root = doc.addElement(“books”);

    3.为根元素添加子元素
    Element book =root.addElement(“book”);

    4.为book元素添加属性(可以链式编程)
    book.addAttribute(“id”,“bo1”);

    5.为book添加子元素
    Element name book.addElement=book.addElement(“name”);

    6.为子元素添加文本
    name.addText(“Think in Java”);

    7.将doc输出到xml文件中即可
    Writer writer = new FileWriter(new File(“src/book.xml”);
    doc.write(writer);

    或者用格式良好的输出(缩进)
    OutputFormat format =OutputFormat.createPrettyPrint();

    XMLWriter writer = new XMLWriter(new FileWriter(new File(“src/book.xml”);
    8.关闭资源
    writer.close();

    我是梦阳辰,期待下次与你相遇!

    关注公众号【轻松玩编程】回复关键字“电子书”,“计算机资源”,“Java从入门到进阶”,”JavaScript教程“,“算法”,“Python学习资源”,“人工智能”等即可获取学习资源。

    在这里插入图片描述

    以梦为马,不负韶华。
  • 相关阅读:
    [洛谷P3360]偷天换日
    [BZOJ3195]奇怪的道路
    [BAOJ3631]松鼠的新家
    [BZOJ4899]记忆的轮廓
    [BZOJ3940]Censoring
    P3303 [SDOI2013]淘金
    2019.8.5 NOIP模拟测试13 反思总结【已更新完毕】
    2019.8.3 NOIP模拟测试12 反思总结【P3938 斐波那契,P3939 数颜色,P3940 分组】
    2019.8.1 NOIP模拟测试11 反思总结
    洛谷P2178 [NOI2015]品酒大会
  • 原文地址:https://www.cnblogs.com/huangjiahuan1314520/p/13047791.html
Copyright © 2020-2023  润新知