用linq查询html中div个数,C#使用Linq to XML进行XPath查询
最近在用到HtmlAgliltyPack進行結點查詢時,發現這里選擇結點使用的是XPath。所以這里總結一下在C#中使用XPath查詢XML的方式。習慣了用Linq,這里也是用的Linq to xml的。
Linq To XML的核心類是XDocument和XElement、XAttribute,下面簡單介紹一下使用。需要引用using System.Xml.Linq命名空間
這三個類簡單理解為:
XDocument:打開的整個XML文檔
XElement:節點元素
XAttribute:屬性
如有以下XML文件
測試XML汪家羊肉館
¥62/人
¥12/人
打開XML文件
1 XDocument doc = XDocument.Load("demo.xml");
獲取根節點(html節點 返回XElement類型)
var root = doc.Root;
獲取第一個子節點(返回XElement類型)
1 var firstNode = root.FirstNode;
獲取全部子節點(返回IEnumerable)
1 var allChildNode = root.Nodes();
獲取指定名稱的第一個子節點(返回XElement類型)
1 var headNode = root.Element("head");
獲取指定名稱的全部子節點(返回IEnumerable)
var allNamedNode = root.Elements("head");
獲取節點指定名稱的屬性(
)1 var attribute = root.Element("body").Element("div").Attribute("class");
獲取節點的全部屬性
1 var allAttributes = root.Attributes();
使用XPath查詢(需要引用using System.Xml.XPath命名空間)
1 var xpathQeury = root.XPathSelectElement("body/div");
獲取節點的名稱和值
1 //獲取結點的名稱
2 var nodeName = root.Name;
3 //獲取節點的值
4 var nodeValue = root.Value;
保存XML
1 doc.Save("demo.xml");
Linq查詢(獲取¥12/人節點下的值)
這里僅做示例,返回返回IEnumerable類型的都可以進行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);
輸出結果都為下
標簽:XML,XPath,C#,Linq,var,root,節點
來源: https://www.cnblogs.com/zhaotianff/p/11319871.html
總結
以上是生活随笔為你收集整理的用linq查询html中div个数,C#使用Linq to XML进行XPath查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信用卡卡奴该如何自救?教你几招避免成为信
- 下一篇: 学编导还是学计算机,高二学编导烧钱吗