Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XPath查询在C中不起作用#_Xpath - Fatal编程技术网

XPath查询在C中不起作用#

XPath查询在C中不起作用#,xpath,Xpath,我有以下XML <?xml version="1.0" encoding="ISO-8859-1"?> <catalog xmlns="urn:ihe:iti:xds-b:2007"> <cd country="USA"> <title>Empire Burlesque</title> <artist>Bob Dylan</artist> <price>10.90</

我有以下XML

<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog xmlns="urn:ihe:iti:xds-b:2007">
  <cd country="USA">
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <price>10.90</price>
  </cd>
  <cd country="UK">
    <title>Hide your heart</title>
    <artist>Bonnie Tyler</artist>
    <price>10.0</price>
  </cd>
  <cd country="USA">
    <title>Greatest Hits</title>
    <artist>Dolly Parton</artist>
    <price>9.90</price>
  </cd>
</catalog>

document.SelectNodes不会返回任何内容。当我删除元素目录(xml的第二行)上的名称空间时,它可以正常工作。所以它与名称空间有关。我如何让它工作?我做错了什么

谢谢
gulumal

我认为您需要将文档中的名称空间添加到
名称空间管理器中

 var nsmgr = new XmlNamespaceManager(document.NameTable);
 // add extra namespace with prefix "s"
 nsmgr.AddNamespace("s", "urn:ihe:iti:xds-b:2007");
然后查询do like so(注意使用“s”作为名称空间前缀):


你的钱是对的!“s”代表什么?它是默认名称空间的代码吗?“s”可以是您在
AddNamespace(“s”,“urn:ihe:iti:xds-b:2007”)中指定的任何内容它只是将其指定为名称空间的简写。否则,您必须将
urn:ihe:iti:xds-b:2007
放在SelectNodes()中XPath查询中的每个节点前面,您可能应该明确地说“s”是名称空间前缀的一个示例。非常感谢!你为我节省了很多时间。谢谢你!
 var nsmgr = new XmlNamespaceManager(document.NameTable);
 // add extra namespace with prefix "s"
 nsmgr.AddNamespace("s", "urn:ihe:iti:xds-b:2007");
 var nl = document.SelectNodes("s:catalog/s:cd[@country='UK']", nsmgr);