用linq查询html中div个数,C#使用Linq to XML进行XPath查询
最近在用到HtmlAgliltyPack進(jìn)行結(jié)點(diǎn)查詢時(shí),發(fā)現(xiàn)這里選擇結(jié)點(diǎn)使用的是XPath。所以這里總結(jié)一下在C#中使用XPath查詢XML的方式。習(xí)慣了用Linq,這里也是用的Linq to xml的。
Linq To XML的核心類是XDocument和XElement、XAttribute,下面簡(jiǎn)單介紹一下使用。需要引用using System.Xml.Linq命名空間
這三個(gè)類簡(jiǎn)單理解為:
XDocument:打開(kāi)的整個(gè)XML文檔
XElement:節(jié)點(diǎn)元素
XAttribute:屬性
如有以下XML文件
測(cè)試XML汪家羊肉館
¥62/人
¥12/人
打開(kāi)XML文件
1 XDocument doc = XDocument.Load("demo.xml");
獲取根節(jié)點(diǎn)(html節(jié)點(diǎn) 返回XElement類型)
var root = doc.Root;
獲取第一個(gè)子節(jié)點(diǎn)(返回XElement類型)
1 var firstNode = root.FirstNode;
獲取全部子節(jié)點(diǎn)(返回IEnumerable)
1 var allChildNode = root.Nodes();
獲取指定名稱的第一個(gè)子節(jié)點(diǎn)(返回XElement類型)
1 var headNode = root.Element("head");
獲取指定名稱的全部子節(jié)點(diǎn)(返回IEnumerable)
var allNamedNode = root.Elements("head");
獲取節(jié)點(diǎn)指定名稱的屬性(
)1 var attribute = root.Element("body").Element("div").Attribute("class");
獲取節(jié)點(diǎn)的全部屬性
1 var allAttributes = root.Attributes();
使用XPath查詢(需要引用using System.Xml.XPath命名空間)
1 var xpathQeury = root.XPathSelectElement("body/div");
獲取節(jié)點(diǎn)的名稱和值
1 //獲取結(jié)點(diǎn)的名稱
2 var nodeName = root.Name;
3 //獲取節(jié)點(diǎn)的值
4 var nodeValue = root.Value;
保存XML
1 doc.Save("demo.xml");
Linq查詢(獲取¥12/人節(jié)點(diǎn)下的值)
這里僅做示例,返回返回IEnumerable類型的都可以進(jìn)行Linq查詢
不使用XPath
1 var queryResult = root.Element("body").Element("div").Elements("div").ElementAt(1).Elements("span").Where(x=>x.Attribute("class") != null && x.Attribute("class").Value == "price2").FirstOrDefault();
2 if(queryResult != null)
3 Console.WriteLine(queryResult.Value);
使用XPath
1 var xpathQueryResult = root.XPathSelectElements("body/div/div[2]/span").Where(x => x.Attribute("class") != null && x.Attribute("class").Value == "price2").FirstOrDefault();
2 if(xpathQueryResult != null)
3 Console.WriteLine(xpathQueryResult.Value);
輸出結(jié)果都為下
標(biāo)簽:XML,XPath,C#,Linq,var,root,節(jié)點(diǎn)
來(lái)源: https://www.cnblogs.com/zhaotianff/p/11319871.html
總結(jié)
以上是生活随笔為你收集整理的用linq查询html中div个数,C#使用Linq to XML进行XPath查询的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 信用卡卡奴该如何自救?教你几招避免成为信
- 下一篇: c# char unsigned_dll