Tag: XPath

如何与XElement或LINQ一起使用XPath?

考虑以下XML: <response> <status_code>200</status_code> <status_txt>OK</status_txt> <data> <url>http://bit.ly/b47LVi</url> <hash>b47LVi</hash> <global_hash>9EJa3m</global_hash> <long_url>http://www.tumblr.com/docs/en/api#api_write</long_url> <new_hash>0</new_hash> </data> </response> 我正在寻找一个非常简短的方法来获取<hash>元素的值。 我试过了: var hash = xml.Element("hash").Value; 但是这不起作用。 有没有可能为XElement提供XPath查询? 我可以用旧的System.Xml框架来做,就像这样做: xml.Node("/response/data/hash").Value 在LINQ命名空间中是否有这样的东西? 更新: 在这个瞎猜之后,我发现了一个办法来做我想做的事情: var hash = xml.Descendants("hash").FirstOrDefault().Value; 我仍然有兴趣看看有没有更好的解决scheme?

将基于兄弟值的节点与XPath匹配

拥有这样的XML文档: <?xml version="1.0" encoding="UTF-8"?> <records type="array"> <record> <name>svn</name> <record-type>A</record-type> <ttl type="integer">86400</ttl> <zone-id type="integer">69075</zone-id> <aux type="integer">0</aux> <id type="integer">xxx</id> <active>Y</active> <data>xxx.xxx.xxx.xxx</data> </record> <record> <name>domain.tld.</name> <record-type>NS</record-type> <ttl type="integer">86400</ttl> <zone-id type="integer">xxx</zone-id> <aux type="integer">0</aux> <id type="integer">xxx</id> <active>Y</active> <data>domain.tld.</data> </record> <record> <name>blog</name> <record-type>A</record-type> <ttl type="integer">86400</ttl> <zone-id type="integer">xxx</zone-id> <aux type="integer">0</aux> <id type="integer">xxx</id> <active>Y</active> <data>xxx.xxx.xxx.xxx</data> </record> </records> 如何匹配所有具有同值/logging/logging/loggingtypes的/logging/logging/ 名称与值“A”?

如果节点值是数字,则XPathtesting

如何检查节点值是否是使用XPath的数字? 有任何想法吗?

用xpathselect一个css类

我只想自己select一个叫做.date的类 出于某种原因,我无法得到这个工作。 如果有人知道我的代码有什么问题,将不胜感激。 @$doc = new DOMDocument(); @$doc->loadHTML($html); $xml = simplexml_import_dom($doc); // just to make xpath more simple $images = $xml->xpath('//[@class="date"]'); foreach ($images as $img) { echo $img." "; }

XPath – select等于值的元素

在Xpath中,我想要select等于特定值的元素。 XML数据示例: <aaa id="11" > <aaa id="21" > <aaa id="31" ></aaa> <bbb id="32" > <aaa id="41" ></aaa> <bbb id="42" ></bbb> <ccc id="43" ></ccc> <ddd id="44" >qwerty</ddd> <ddd id="45" ></ddd> <ddd id="46" ></ddd> </bbb> </aaa> <bbb id="22" > <aaa id="33" >qwerty</aaa> <bbb id="34" ></bbb> <ccc id="35" ></ccc> <ddd id="36" ></ddd> <ddd id="37" ></ddd> <ddd id="38" ></ddd> […]

如何通过XPath链接文本find链接URL?

我有一个格式良好的XHTML页面。 当我有链接的文本时,我想查找链接的目标url。 例 <a href="http://stackoverflow.com">programming questions site</a> <a href="http://cnn.com">news</a> 我想要一个XPathexpression式,如果给定的programming questions site它会给http://stackoverflow.com ,如果我给它的news它会给http://cnn.com 。

XPath:获取子节点包含属性的节点

假设我有以下XML: <book category="CLASSICS"> <title lang="it">Purgatorio</title> <author>Dante Alighieri</author> <year>1308</year> <price>30.00</price> </book> <book category="CLASSICS"> <title lang="it">Inferno</title> <author>Dante Alighieri</author> <year>1308</year> <price>30.00</price> </book> <book category="CHILDREN"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="WEB"> <title lang="en">XQuery Kick Start</title> <author>James McGovern</author> <author>Per Bothner</author> <author>Kurt Cagle</author> <author>James Linn</author> <author>Vaidyanathan Nagarajan</author> <year>2003</year> <price>49.99</price> </book> <book category="WEB"> <title lang="en">Learning XML</title> <author>Erik […]

如何编写XPath查询以匹配两个属性?

以下问题: <div id="id-74385" class="guest clearfix" style="z-index: 999;"> 如上所述, 如果我想检查id和class的XPathexpression式,我们可以做w /'和'condition LIKE: //div[@id='id-74385'] and div[@class='guest clearfix'] 这是正确的方法吗? 我的执行失败…请帮助!

使用xpath查找节点的位置

任何人都知道如何获得使用xpath节点的位置? 说我有以下的XML: <a> <b>zyx</b> <b>wvu</b> <b>tsr</b> <b>qpo</b> </a> 我可以使用下面的xpath查询来select第三个<b>节点(<b> tsr </ b>): a/b[.='tsr'] 哪一个都好,但我想返回该节点的序号位置,如下所示: a/b[.='tsr']/position() (但多一点工作!) 这甚至有可能吗? 编辑 :忘了提及我使用.net 2,所以它的xpath 1.0! 更新 :结束了使用詹姆斯苏拉克的优秀答案 。 对于那些感兴趣的是我在C#中的实现: int position = doc.SelectNodes("a/b[.='tsr']/preceding-sibling::b").Count + 1; // Check the node actually exists if (position > 1 || doc.SelectSingleNode("a/b[.='tsr']") != null) { Console.WriteLine("Found at position = {0}", position); }

如何使用XPath与XDocument?

有一个类似的问题,但似乎解决scheme没有在我的情况下工作: 与XDocument,XPath和命名空间的古怪 这是我正在使用的XML: <?xml version="1.0" encoding="utf-8"?> <Report Id="ID1" Type="Demo Report" Created="2011-01-01T01:01:01+11:00" Culture="en" xmlns="http://demo.com/2011/demo-schema"> <ReportInfo> <Name>Demo Report</Name> <CreatedBy>Unit Test</CreatedBy> </ReportInfo> </Report> 下面是我认为它应该工作的代码,但它没有… XDocument xdoc = XDocument.Load(@"C:\SampleXML.xml"); XmlNamespaceManager xnm = new XmlNamespaceManager(new NameTable()); xnm.AddNamespace(String.Empty, "http://demo.com/2011/demo-schema"); Console.WriteLine(xdoc.XPathSelectElement("/Report/ReportInfo/Name", xnm) == null); 有没有人有任何想法? 谢谢。