#@TOC
C# 从XML文件查询读取
XML文件里面定义了树状结构的对象和特征,检索一定特征的对象,并罗列起来,可以这样做
元素定义
这个讲解最清晰:
[https://www.w3schools.com/xml/dom_intro.asp]
根元素 >> 元素>>…>>元素层次关系,如:
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
...
bookstore: root element
book: element
title: element
lang=‘en’: 是title的属性
2005是 element year的innertext不是属性
这里解释
读取文件
XmlDocument doc = new XmlDocument();
doc.Load(filepathString); //用文件路径string导入
XmlNodeList books = roadXML.GetElementsByTagName("book"); //读取全部book元素
读取一个元素
例如读取第一本书的作者 (继上例子)
string author = books[0].SelectSingleNode("author").InnerText;
查找一个子元素满足条件的元素
这是关键方法,但是文档不清晰
XmlNode.SelectSingleNode
这里是技术关键:要用XPath,但是没有解释怎么用XPath.
SelectNodes Using XPath Navigation
XPath不复杂,看这个就懂了
XPath语法
例子 查找列表第一个作者为Giada De Laurentiis的书名
string bookName = doc.SelectSingleNode(@"bookstore/book[author='Giada De Laurentiis']/title").InnerText;