我来详细讲解一下《C#读取xml节点数据方法小结》的完整攻略。
标题
1. 什么是XML?
XML(Extensible Markup Language),中文翻译为可扩展标记语言,它是一种标准的文本格式,常被用来表示数据传输。
2. XML文档结构
XML文档由多个节点组成,有根节点、元素节点、属性节点等。下面是一个示例的XML文档结构:
<?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>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J.K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore>
其中,<?xml version="1.0" encoding="utf-8"?>
是 XML 声明,表示该文档是 XML 文件,使用的编码是 utf-8。
<bookstore>
是根节点,它包含了两个 <book>
元素。
每个 <book>
元素都拥有一个 category 属性,表示该书籍所属的类别。
<title>
、<author>
、<year>
和 <price>
都是 <book>
元素的子元素,它们也被称为元素节点。<title>
元素拥有一个 lang 属性。
3. C#读取XML节点的方法
3.1 XmlDocument读取XML节点
XmlDocument 是 C# 中用于读取和创建 XML 文档的类,可以使用 XmlDocument 对象读取和操作 XML 节点。下面是一个简单的通过 XmlDocument 读取 XML 节点的示例:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<!--这里输入要读取的XML数据-->");
XmlNode rootNode = xmlDoc.SelectSingleNode("/bookstore");
if (rootNode != null)
{
XmlNodeList bookNodes = rootNode.ChildNodes;
foreach (XmlNode bookNode in bookNodes)
{
string category = bookNode.Attributes["category"].Value;
string title = bookNode.SelectSingleNode("title").InnerText;
string author = bookNode.SelectSingleNode("author").InnerText;
string year = bookNode.SelectSingleNode("year").InnerText;
string price = bookNode.SelectSingleNode("price").InnerText;
Console.WriteLine($"Category: {category}, Title: {title}, Author: {author}, Year: {year}, Price: {price}");
}
}
3.2 XDocument读取XML节点
XDocument 是 C# 中自 .NET Framework 3.5 版本以来新增的类,是 .NET 对 XML LINQ 操作的支持。XDocument 可以处理基于 LINQ 的 XML 操作,使用更加灵活。下面是一个简单的通过 XDocument 读取 XML 节点的示例:
string xmlString = "<bookstore><book category=\"COOKING\"><title lang=\"en\">Everyday Italian</title><author>Giada De Laurentiis</author><year>2005</year><price>30.00</price></book><book category=\"CHILDREN\"><title lang=\"en\">Harry Potter</title><author>J.K. Rowling</author><year>2005</year><price>29.99</price></book></bookstore>";
XDocument xmlDoc = XDocument.Parse(xmlString);
var books = from book in xmlDoc.Descendants("book")
select new
{
Category = book.Attribute("category").Value,
Title = book.Element("title").Value,
Author = book.Element("author").Value,
Year = book.Element("year").Value,
Price = book.Element("price").Value
};
foreach (var book in books)
{
Console.WriteLine($"Category: {book.Category}, Title: {book.Title}, Author: {book.Author}, Year: {book.Year}, Price: {book.Price}");
}
4. 总结
在 C# 中读取 XML 节点可以使用 XmlDocument 或 XDocument,两者各有优缺点。XmlDocument 可以处理更大的 XML 文档和更复杂的 XML 操作,而 XDocument 更加灵活,可以处理基于 LINQ 的 XML 操作。根据不同的需求选择不同的实现方式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#读取xml节点数据方法小结 - Python技术站