我有以下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>
-------------------以及代码---
var document = new XmlDocument();
document.Load(@"C:\Temp\tmp\data1.xml");
var nsmgr = new XmlNamespaceManager(document.NameTable);
var nl = document.SelectNodes("catalog/cd[@country='UK']", nsmgr);
document.SelectNodes不会返回任何内容。当我删除元素目录(xml的第二行)上的名称空间时,它工作正常。所以它与命名空间有关。我如何使其工作?我究竟做错了什么?
感谢 gulumal
答案 0 :(得分:1)
我相信您需要将文档中的命名空间添加到NamespaceManager
var nsmgr = new XmlNamespaceManager(document.NameTable);
// add extra namespace with prefix "s"
nsmgr.AddNamespace("s", "urn:ihe:iti:xds-b:2007");
然后你查询就像这样(注意使用&#34; s&#34;作为命名空间前缀):
var nl = document.SelectNodes("s:catalog/s:cd[@country='UK']", nsmgr);