XML的学习
1.1 XML简介
1、XML(eXtensible Markup Language,可扩展标记语言),可以自定义标签。
2、基于文本格式,所以XML可以跨平台、跨语言
3、标签没有预定义,需要自定义
4、XML用来保存和传输数据,不是用来显示数据的。(HTML用来显示数据)
5、XML是元语言(可以通过此语言创造其他语言的语言成为元语言)
1.2 XML文档结构
1、第一行是XML声明,包括版本和字符编码
<?xml version="1.0" encoding="utf-8" ?>
2、XML文档是一个树型结构,它总是从“树根”开始,然后扩展到树叶。
3、XML文档必须要包含根元素。
1.3 XML节点的分类
<stu id="001"> 小明 </stu>
1、stu 为元素节点 2、小明 为值节点 3、 id 为属性节点
1.4 数据的分类
1、PCDATA:parse character data(可解析字符数据)由解析器解析
2、CDATA:character data,不会由解析器解析
3、元素后一般是PCDATA,属性后一般是CDATA
1.5 DTD
1、DTD:document type definition(文档类型定义) 2、DTD用来验证XML文档是否有效 3、DTD可以是一个独立的文件(外部DTD),也可以是嵌套在XML文档中(内部DTD)
1.5.1 语法:
<!ELEMENT 元素 (子元素) > <!ELEMENT 元素 (#PCDATA)> <!ELEMENT 元素 EMPTY> 空标记 <!ELEMENT 元素 ANY >
1.5.2 引用外部DTD
引用外部DTD有两个关键字 1、SYSTEM:引用自定义的DTD文件 <!DOCTYPE 根元素 SYSTEM “文件名”> 2、PUBLIC:引用互联网的DTD文件 <!DOCTYPE HTML PUBLIC "DTD名称" "dtd的域名地址"> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE movies [ <!ELEMENT movies (movie+)> <!ELEMENT movie (title,actor+,rating)> <!ELEMENT title (#PCDATA)> <!ELEMENT actor (#PCDATA)> <!ELEMENT rating (#PCDATA)> ]> <?xml version="1.0" encoding="UTF-8"?> <movies> <movie> <title>西游记</title> <actor>六小龄童</actor> <actor>马德华</actor> <rating>大家一起看</rating> </movie> <movie> <title>水浒传</title> <actor>宋江</actor> <rating>大人陪同</rating> </movie> </movies>
1.5.3 引用内部DTD
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE movies [ <!ELEMENT movies (movie+)> <!ELEMENT movie (title,actor+,rating)> <!ELEMENT title (#PCDATA)> <!ELEMENT actor (#PCDATA)> <!ELEMENT rating (#PCDATA)> ]> <movies> <movie> <title>西游记</title> <actor>六小龄童</actor> <actor>马德华</actor> <rating>大家一起看</rating> </movie> <movie> <title>水浒传</title> <actor>宋江</actor> <rating>大人陪同</rating> </movie> </movies>
1.6 实体
实体又分为:一般实体,参数实体。 一般实体中分为:预定义实体,自定义实体。
1.6.1 预定义实体
实体名称 字符
lt ---------- <
gt --------- >
amp ------ &
quot ------- “
apos ------- ‘
1.6.2 自定义实体
语法:<!ENTITY 实体名 实体值 > 调用实体:&实体名;
1.6.3 参数实体
参数实体和一般实体声明的时候很相似,区别是参数实体前面有”%” 语法:<!ENTITY % 实体名 ‘实体默认值’> 例子: <?xml version="1.0" encoding="UTF-8"?> <!ENTITY % p 'test'> <!ELEMENT roster ((%p;)+)> <!ELEMENT %p; (name,sex,birthday,score?,skill+)> <!ELEMENT name (#PCDATA)> <!ELEMENT sex (#PCDATA)> <!ELEMENT birthday (#PCDATA)> <!ELEMENT score (#PCDATA)> <!ELEMENT skill (#PCDATA)> <!ATTLIST %p; id ID #REQUIRED> XML: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE roster SYSTEM "10-demo.dtd"[ <!ENTITY % p "teacher"> ]> <roster> <teacher id="t001"> <name></name> <sex></sex> <birthday></birthday> <skill></skill> <skill></skill> </teacher> </roster>
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥