通过XPath和HtmlAgilityPack获取属性的值
我有一个HTML文档,我用XPath解析它。 我想获得元素输入的值,但它不起作用。
我的Html:
我的代码:
using HtmlAgilityPack; HtmlAgilityPack.HtmlDocument doc; HtmlWeb hw = new HtmlWeb(); HtmlNodeCollection node = doc.DocumentNode.SelectNodes("//input/@value"); string s=node[0].InnerText;
所以我想得到这个值:“10743” (我不介意另外给出答案的标签。)
你可以得到它.Attributes
集合:
var doc = new HtmlAgilityPack.HtmlDocument(); doc.Load("file.html"); var node = doc.DocumentNode.SelectNodes("//input") [0]; var val = node.Attributes["value"].Value; //10743
如果使用HtmlNavigator
也可以直接获取属性。
//Load document from some html string HtmlDocument hdoc = new HtmlDocument(); hdoc.LoadHtml(htmlContent); //load navigator for current document HtmlNavigator navigator = (HtmlNodeNavigator)hdoc.CreateNavigator(); //Get value with given xpath string xpath = "//input/@value"; string val = navigator.SelectSingleNode(xpath).Value;
Update2 :这是一个如何使用Html Agility Pack获取属性值的代码示例:
https://htmlagilitypack.codeplex.com/wikipage?title=Examples
HtmlDocument doc = new HtmlDocument(); doc.Load("file.htm"); foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"]) { HtmlAttribute att = link.Attributes["href"]; att.Value = FixLink(att); } doc.Save("file.htm");
您显然需要根据需要调整此代码 – 例如,您不会修改属性,而只会使用att.Value
。
更新 :你也可以看看这个问题:
使用html Agility Pack选择属性值
您的问题很可能是默认命名空间问题 – 搜索“XPath默认命名空间c#”,您会发现许多好的解决方案(提示:使用具有XmlNamespaceManager
参数的SelectNodes()
重载)。
以下代码显示了在 “无命名空间”中文档中的属性获取的内容 :
using System; using System.IO; using System.Xml; public class Sample { public static void Main() { XmlDocument doc = new XmlDocument(); doc.LoadXml("" + "Pride And Prejudice " + ""); XmlNode root = doc.DocumentElement; XmlNode value = doc.SelectNodes("//input/@value")[0]; Console.WriteLine("Inner text: " + value.InnerText); Console.WriteLine("InnerXml: " + value.InnerXml); Console.WriteLine("OuterXml: " + value.OuterXml); Console.WriteLine("Value: " + value.Value); } }
运行此应用程序的结果是 :
Inner text: novel InnerXml: novel OuterXml: value="novel" Value: novel
现在,对于默认命名空间中的文档 :
using System; using System.IO; using System.Xml; public class Sample { public static void Main() { XmlDocument doc = new XmlDocument(); doc.LoadXml("" + "Pride And Prejudice " + ""); XmlNode root = doc.DocumentElement; XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); nsmgr.AddNamespace("x", "some:Namespace"); XmlNode value = doc.SelectNodes("//x:input/@value", nsmgr)[0]; Console.WriteLine("Inner text: " + value.InnerText); Console.WriteLine("InnerXml: " + value.InnerXml); Console.WriteLine("OuterXml: " + value.OuterXml); Console.WriteLine("Value: " + value.Value); } }
运行此应用程序再次产生想要的结果 :
上述就是C#学习教程:通过XPath和HtmlAgilityPack获取属性的值分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
Inner text: novel InnerXml: novel OuterXml: value="novel" Value: novel
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1011218.html