Tag: xpath

JSON.net vs XPATH:如何在SelectTokens中保留节点顺序?

XPath 2声明选择的节点顺序应按其在文档中的顺序返回。 当您在JSON.Net中使用SelectTokens(JSONPath)时,情况并非如此 当我处理以下文件时 string json = @” { “”Files””: { “”dir1″”: { “”Files””: { “”file1.1.txt””: { “”size:100″”}, “”file1.2.txt””: { “”size:100″”} } }, “”dir2″”: { “”Files””: { “”file2.1.txt””: { “”size:100″”}, “”file2.2.txt””: { “”size:100″”} } }, “”file3.txt””: { “”size:100″”} } }”; 使用JSON.net SelectTokens(“$ .. files。*”)时的顺序如下 dir1 dir2 file3.txt file1.1.txt file1.2.txt file2.1.txt file2.2.txt 当我期望以下顺序(作为Xpath // files / […]

C#和XPath – 如何查询

我有一个XML文件,它具有以下结构: … The Title 42 … … more page items … 我稍微了解一下XPath-Query并编写了以下代码: _xmlArticlesDocument = new XmlDocument(); _xmlArticlesDocument.Load(xmlArticlesFileName); 现在我想抓住具有给定id-Subelement的页面Element。 所以我写道: XmlNode node = _xmlArticlesDocument.DocumentElement.SelectSingleNode (“//mediawiki/page[id=” + id.ToString() + “]”); 但节点始终为空。 我尝试了几个查询,包括“page / id”,“page”,“/ page”,“// page”来获取任何内容 ,但node始终为null。 我通过快速检查检查了_xmlArticlesDocument变量,它包含具有预期结构的正确XML文件。 在我看来,我错过了一些非常基本的东西,但不知道是什么。 也许这里有人有想法? 谢谢,弗兰克

如何只处理某些XML节点?

这是我的XML片段(它有一个根元素)。 Ellen Galinsky Paperback Harper Paperbacks 9780061732324 9780061732324 1 ISBN13: 9780061732324 Condition: New Notes: BRAND NEW FROM PUBLISHER! 100% Satisfaction Guarantee. Tracking provided on most orders. Buy with Confidence! Millions of books sold! 006173232X 1 112 904 98 602 William Morrow Paperbacks 1699 USD $16.99 William Morrow Paperbacks 006173232X 1 400 120 880 95 590 […]

HtmlAgilityPack能否在其XPATH选择器中使用正则表达式?

我希望能够创建一个节点集合,其中文本以单词开头,然后是数字。 例如,给出以下内容: FINDTHIS 1 FINDTHIS SOMETEXT FINDTHIS 2 我希望能够创建一个由两个段落节点组成的集合:FINDTHIS 1和FINDTHIS 2。 一种可能的方法是创建一个xpath查询,如//p[starts-with(., ‘FINDTHIS ‘)] ,然后使用正则表达式来确定下一个字符是否为数字。 如果我想获得返回上述条件的匹配列表,我可以创建一个正则表达式对象并测试集合中每个成员的文本。 有没有办法使用HtmlAgilityPack直接在选择器中使用正则表达式?

获取DIV内的链接

我希望能够从这个div中获得第一个链接。 <— This one text Tweet it! 我试过这个代码,但它不起作用 HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(source); var div = doc.DocumentNode.SelectSingleNode(“//div[@id=’first-tweet-wrapper’]”); if (div != null) { var links = div.Descendants(“a”) .Select(a => a.InnerText) .ToList(); }

在可移植类库中包含XPathSelectElement

如何在可移植类库中使用XPathSelectElement ? 当我尝试在项目中包含System.Xml.XPath程序集时,我收到以下错误: “System.Xml.Linq.XElement”类型在未引用的程序集中定义。 您必须添加对程序集’System.Xml.Linq,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35’的引用。 我的可移植类库已经引用了System.Xml.Linq 。

通过任意深度的XPath选择XML节点

有了XML文档,我希望得到第一个具有特定名称的节点,无论它包含哪个嵌套深度。 我尝试了几件事没有成功: var node1 = doc.SelectSingleNode(@”//Shortcut”); var node2 = doc.SelectSingleNode(@”/*/Shortcut”); var node3 = doc.SelectSingleNode(@”//*/Shortcut”); var node4 = doc.SelectSingleNode(@”*/Shortcut”); … 每次调用都会产生一个NULL节点。 我认为它应该是一些简单的XPath语法。 你能帮助我吗? (如果这很重要:XML文档是WiX项目的输入文件,因此可能涉及一些命名空间问题?!?)。 编辑 我也尝试了以下内容: var nsm = new XmlNamespaceManager(doc.NameTable); nsm.AddNamespace(string.Empty, @”http://schemas.microsoft.com/wix/2006/wi”); nsm.AddNamespace(@”ns”, @”http://schemas.microsoft.com/wix/2006/wi”); 和…一起: var node1 = doc.SelectSingleNode(@”//Shortcut”, nsm); var node2 = doc.SelectSingleNode(@”/*/Shortcut”, nsm); var node3 = doc.SelectSingleNode(@”//*/Shortcut”, nsm); var node4 = doc.SelectSingleNode(@”*/Shortcut”, nsm); […]

通用Windows平台中的System.Xml.XPath

根据MSDN,System.Xml.XPath中的Extensions类应该可用于通用Windows平台(Windows 10): https://msdn.microsoft.com/en-us/library/system.xml.xpath.extensions(v=vs.110).aspx 但是,在默认配置中,甚至System.Xml.XPath命名空间都不可用。 编译器和IntelliSense找不到它,甚至Resharper也找不到丢失的引用 – 尽管根据MSDN它应该在System.Xml.Linq.dll中。 (我可以毫无问题地使用LINQ) 同样在参考经理中我无法找到合适的assembly体。 通过一些研究,我在NuGet上找到了这个官方的System.Xml.XPath包: https : //www.nuget.org/packages/System.Xml.XPath/ 但是,这不包含Extension类(以及XPathSelectElement扩展方法)。 (但至少是其他XPath类) 我做错了什么或这是文档中的错误,这些类都不适用于Windows 10? 编辑:我已经完成的事情: Visual Studio重启 Windows重启 在另一台计算机上测试

如何计算包含特定值的XML节点的数量

我正在寻找如何计算包含值“否”的XML文件中的节点以及元素的总数。 我的元素计数工作正常,但我不确定在XML中查找值的逻辑。 要获得我使用的总计数: XmlDocument readDoc = new XmlDocument(); readDoc.Load(MapPath(“Results.xml”)); int count = readDoc.SelectNodes(“root/User”).Count; lblResults.Text = count.ToString(); 下面是我的XML: http://www.example.com Yes http://www.example.com Yes http://www.example.com Yes http://www.example.com Yes http://www.example.com No

用XPath排序 – 不是XSL

XPath DOM编程中是否有任何方法使用System.Xml来运行带有排序参数的selectNodes (XPATH)? 例如,使用以下XML和程序以与文档相同的顺序写入值(降序)。 有没有办法使用XPath以升序获取值? 注意。 当然,您可以在XSL中进行预排序,但是我需要更新值,因为我正在循环它们。 由于XSL给了我一个元素的排序副本 , 而不是实际的元素本身 ,我不能使用XSL。 这是一些XML,一个程序输出 public static void Main() { XmlDocument xml = new XmlDocument(); xml.Load( “t.xml” ); // SelectNodes gets in document order, but I want in // ascending order based on @value foreach( XmlNode ndNode in xml.SelectNodes( “/xml/ele” ) ) { Console.WriteLine( ndNode.Attributes[“value”].Value ); } } […]