XML基础
XML的全称是EXtensible Markup Language,可扩展标记语言 XML文档结构 有且只有一个根节点。 第一行必须是XML声明。 XML标签的书写规则与HTML相同。 XML声明 XML声明说明XML文档的基本信息,包括版本号与字符集,写在XML第一行。 <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> version 必须属性 代表版本号1.0/1.1 encoding 非必须 UTF-8设置字符集,用于支持中文
standalone 非必须 当前xml文件是否依赖其他的xml文件 取值:yes、no 处理特殊字符 标签体中,出现"<"、">"特殊字符,会破坏文档结构。 解决方案1:使用实体引用。 解决方案2:使用CDATA标签。
无效的XML: <exam> <question>1+4<3是否正确?</question> <question>3+5>8是否正确?</question> </exam>
修改后的XML <exam> <question>1+4<3是否正确?</question> <question>3+5>8是否正确?</question> </exam>
CDATA标签 1.CDATA指的是不应由XML 解析器进行解析的文本数据 2.从"<![CDATA[" 开始,到"]]>"结束 例如: <lesson> <content> <![CDATA[html中标签的使用:a<body><a href="index.html">首页</a></body>]]> </content> </lesson>
页面效果如下:
XML语义约束 XML语义约束有两种定义方式:DTD与XMLSchema。 DTD 1.DTD(Document Type Definition,文档类型定义是)一种简单易用的语义约束方式。 2.DTD文件的扩展名为.dtd。 DTD定义节点 利用DTD中的标签,我们可以定义XML文档中允 许出现的节点及数量,以hr.xml为例: 定义hr节点下只允许出现1个employee子节点。 <!ELEMENT hr (employee)> employee节点下必须包含以下四个节点,且按顺序出现。 <!ELEMENT employee (name,age,salary,department)> 定义name标签体只能是文本,#PCDATA代表文本元素。 <!ELEMENT name (#PCDATA)> DTD定义节点数量 如某个子节点需要多次重复出现,则需要在子节点后增加相应的描述符。 hr节点下最少出现1个employee子节点。 <!ELEMENT hr (employee+)> hr节点下可出现0..n个employee子节点。 <!ELEMENT hr (employee*)> hr节点下最多出现1个employee子节点。 <!ELEMENT hr (employee?)> //employee标签内有 name,age,salary,department子标签 <!ELEMENT employee (name,age,salary,department)> //基本语法:<!ATTLIST 元素名称 属性名称 属性类型 属性约束> //属性类型 CDATA:字符或数字,普通的字符串;属性约束:#REQUIRED必须的 #IMPLIED属性不是必须的 #FIXED value属性值是固定的 <!ATTLIST employee no CDATA ""> //在DTD中,指定某个标签中的内容是字符数据时,使用(#PCDATA) //定义name标签体只能是文本,#PCDATA代表文本元素。 <!ELEMENT name (#PCDATA)> ... XML中引用dtd文件: 在xml文件中使用<!DOCTYPE>标签来引用DTD文件 三种书写格式: 1.引入本地dtd
<!DOCTYPE 根节点 SYSTEM "dtd文件路径"> 示例:<!DOCTYPE hr SYSTEM "hr.dtd">
2.在xml文件内部引入
<!DOCTYPE 根节点 [dtd文件内容]>
3.引入网络dtd
<!DOCTYPE 根节点 PUBLIC "DTD文件名称" "DTD文档的URL">
XML Schema 1.XML Schema比DTD更为复杂,提供了更多功能。 2.XML Schema 提供了数据类型、格式限定、数据范围等特性。 Dom4j Dom4j是一个易用的、开源的库,用于解析XML。它 应用于Java平台,具有性能优异、功能强大和极其易使 用的特点。 Dom4j将XML视为Document对象。 XML标签被Dom4j定义为Element对象 XPath路径表达式 XPath路径表达式是XML 文档中查找数据的语言。 常用的基本表达式 nodename:选取此节点的所有子节点 /:从根节点选取 //:从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置 .:选取当前节点 ..:选取当前节点的父节点 @:选取属性
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律