上一篇文章测试了使用XmlDocument类读取XML文件,今天使用XDocment类测试读取XML文件。
测试XML文件仍是是Product.xml’
<Table>
<Product>
<Product_id>1</Product_id>
<Product_name>Product 1</Product_name>
<Product_price>1000</Product_price>
</Product>
<Product>
<Product_id>2</Product_id>
<Product_name>Product 2</Product_name>
<Product_price>2000</Product_price>
</Product>
<Product>
<Product_id>3</Product_id>
<Product_name>Product 3</Product_name>
<Product_price>3000</Product_price>
</Product>
<Product>
<Product_id>4</Product_id>
<Product_name>Product 4</Product_name>
<Product_price>4000</Product_price>
</Product>
</Table>
测试代码如需:
添加引用
using System.Xml.Linq;
using System.Xml;
XDocument xdoc = XDocument.Load(xmlFile);
var querys = from n in xdoc.Root.Descendants("Product\_name")
select n;
Console.WriteLine($"{querys.Count()}");
foreach (XElement xel in querys)
{
Console.WriteLine($"{xel.Value}");
}
输出:
4
Product 1
Product 2
Product 3
Product 4
首先得使用Load方法加载XML文件,使用Descendants筛选该参数名的元素,返回该元素的集合,可遍历该集合元素的值。
修改上查询方式:
var query2 = from n in xdoc.Root.Descendants("Product")
select n;
foreach (XElement el in query2)
{
Console.WriteLine(el.Element("Product\_id").Value);
Console.WriteLine(el.Element("Product\_name").Value);
Console.WriteLine(el.Element("Product\_price").Value);
}
输出:
1
Product 1
1000
2
Product 2
2000
3
Product 3
3000
4
Product 4
4000
因为筛选的是Product节点,Descendants(“Product”)
所以可以获取该节点下的所有子节点的值。
感觉XDocment 类比XmlDocment类方便一些。