当前位置:网站首页>XML入门三
XML入门三
2022-07-04 12:42:00 【华为云】
Xml基础03
补充复习:
Xml
可扩展的标记语言
eXtensible Markup Language
以简单文本格式存储数据的方式
Xml****结构
元素,属性,声明,注释
XML****文档验证
DTD
Schema :XSD架构
文档对象模型-DOM
XML文件的树状结构
Xml****数据解析
Dom:XPath
Sax:XmlTextReader, XmlTextWriter
Xml与Ado.Net交互
XmlNode****选择节点的方法
SelectSingleNode(string)
选择匹配 XPath 表达式的第一个 XmlNode。
SelectNodes(string)
选择匹配 XPath 表达式的节点列表
适用于:
XmlDocument
XmlElement
XmlAttribute
XPath
Xml文档查询语言
用于从 XML 文档中选择节点集
目标 (假设当前节点是book节点) | XPath举例 |
---|---|
选择当前节点 | . |
选择父节点 | … |
选择当前节点的所有子节点 | ***** |
选择author子节点 | author |
选择当前节点的title属性 | @title |
选择当前节点的所有属性 | @* |
选择当前节点的所有文本节点(XmlText) | text() |
在当前文档中选择带有特定名称的所有节点,例如选择所有author节点 | //author |
在当前文档中选择带有特定名称和特定父节点名称的所有节点,例如选择所有父节点是book,节点是author的节点 | //book/author |
选择值满足条件的节点,例如选择作者是吴承恩的book节点 | **//book[author=吴承恩 |
选择属性满足条件的节点,例如选择是title是红楼book节点 | **//book[@title= ‘红楼梦’] |
Xml解析
DOM : 基于文档(对象),树型结构,载入时整个载入(内存占用较大)
SAX : 基于流,载入时逐行载入(适合于大量数据的解析)
SAX 模式解析Xml
主要的构成类:
XmlReader(包含XmlTextReader 和 XmlNodeReader两个类)
- 只向前,非缓存的读取器,将XML数据作为流来处理。
- 内存需求并不是很大
- 没有灵活的导航需求
- 没有在基于DOM的模型中可用的读写功能
XmlWriter (包含Xml)
- 是一个为生成XML流提供“只向前,非缓存”方式的抽象类。
XmlTextReader:提供了对XML文件的快速,只向前的访问。XmlTextReader的技术类似于读取其他任何文件,先打开文件,读取文件,直至文件结尾,后关闭文件。
XmlTextReader newReader = new XmlTextReader("filename");newReader.Read(); //读取xml文件的下一个结点newReader.Read().XmlNodeType()//找到所需要的内容
XmlNodeType枚举的成员:
成 员 | 说 明 |
---|---|
Attribute | 属性,如id=“1” |
Comment | XML注释,如<!- - Some comment - -> |
Document | 文档对象,表示XML树的根 |
XmlDeclaration | 在文档顶部的XML声明 |
Element , EndElement | 开始元素和结束元素 |
Text | 元素的文本内容 |
Whitespace | 标记之间的空白 |
…… | …… |
…… | …… |
使用XmlTextWriter写XML文件的过程和文件系统写数据的情形相同。
1 打开或者创建一个文件。
2将数据写入文件中
3刷新数据流以确保提交每一个动作
4 关闭文件
XmlTextWrite的使用:
1创建一个xml文件
XmlTextWriter bookWriter = new XmlTextWriter(“C:\book.xml", Encoding.Default);
2写XML
创建XML声明
bookWriter.WriteStartDocument();
编写节点:
bookWriter.WriteStartElement(“Price”);
bookWriter.WriteString(“120”);
bookWriter.WriteEndElement();
或者
bookWriter.WriteElementString(" Price ", “120”);
添加属性
bookWriter.WriteStartElement(“Book”);
bookWriter.WriteAttributeString(“Title”, “三国演义”);
bookWriter.WriteEndElement();
3刷新数据流关闭文件
bookWriter.Flush();
bookWriter.Close();
Dom与Sax区别
文档对象模型DOM
DOM 读取整个XML文件并将该文件存储在一个树结构中。
DOM 创建表示原始文档中每个东西的对象,包括元素、文本、属性和空格。
DOM API 是解析 XML 文档非常有用的方法。
SAX解析
读取和操作 XML 数据更快速、更轻量。
SAX 在读取文档时处理它,从而不必等待整个文档被存储之后才采取操作。
适用于处理数据流,即随着数据的流动而依次处理数据。
总结
Xml
可扩展的标记语言
eXtensible Markup Language
以简单文本格式存储数据的方式
Xml结构
元素,属性,声明,注释
XML文档验证
DTD
Schema :XSD架构
Xml数据解析
文档对象模型-DOM
类似Sax:XmlTextReader, XmlTextWriter
Xml与Ado.Net交互
DataSet
ReadXml(“xml文件”)
WriteXml(" xml文件");
边栏推荐
- Apache server access log access Log settings
- A taste of node JS (V), detailed explanation of express module
- How real-time cloud interaction helps the development of education industry
- Rsyslog配置及使用教程
- MySQL three-level distribution agent relationship storage
- 《预训练周刊》第52期:屏蔽视觉预训练、目标导向对话
- Etcd storage, watch and expiration mechanism
- Simple understanding of binary search
- It is six orders of magnitude faster than the quantum chemical method. An adiabatic artificial neural network method based on adiabatic state can accelerate the simulation of dual nitrogen benzene der
- PostgreSQL 9.1 soaring Road
猜你喜欢
Interviewer: what is the difference between redis expiration deletion strategy and memory obsolescence strategy?
诸神黄昏时代的对比学习
Cann operator: using iterators to efficiently realize tensor data cutting and blocking processing
光环效应——谁说头上有光的就算英雄
Practice: fabric user certificate revocation operation process
n++也不靠谱
[leetcode] 96 and 95 (how to calculate all legal BST)
eclipse链接数据库中测试SQL语句删除出现SQL语句语法错误
CVPR 2022 | transfusion: Lidar camera fusion for 3D target detection with transformer
Concepts and theories related to distributed transactions
随机推荐
使用 NSProxy 实现消息转发
Interviewer: what is the difference between redis expiration deletion strategy and memory obsolescence strategy?
【云原生 | Kubernetes篇】深入了解Ingress(十二)
ISO 27001 Information Security Management System Certification
Building intelligent gray-scale data system from 0 to 1: Taking vivo game center as an example
Efficient! Build FTP working environment with virtual users
敏捷开发/敏捷测试感受
光环效应——谁说头上有光的就算英雄
AI painting minimalist tutorial
In 2022, it will be es2022 soon. Do you only know the new features of ES6?
8 expansion sub packages! Recbole launches 2.0!
When MDK uses precompiler in header file, ifdef is invalid
Comparative study of the gods in the twilight Era
爬虫练习题(一)
Agile development / agile testing experience
CANN算子:利用迭代器高效实现Tensor数据切割分块处理
阿里云有奖体验:用PolarDB-X搭建一个高可用系统
SQL statement syntax error in test SQL statement deletion in eclipse linked database
Solution: how to delete the information of Jack in two tables with delete in one statement in Oracle
c#数组补充