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文件");