XPath查询在C中不起作用#
我有以下XMLXPath查询在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 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);