gpt4 book ai didi

XPath 查询在 C# 中不起作用

转载 作者:行者123 更新时间:2023-12-03 16:31:17 26 4
gpt4 key购买 nike

我有以下 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 的第二行)上的 namespace 时,它工作正常。所以它与命名空间有关。我如何使它工作?我究竟做错了什么?

谢谢
古鲁马尔

最佳答案

我相信您需要将文档中的命名空间添加到您的 NamespaceManager 中。

 var nsmgr = new XmlNamespaceManager(document.NameTable);
// add extra namespace with prefix "s"
nsmgr.AddNamespace("s", "urn:ihe:iti:xds-b:2007");

然后你像这样查询(注意使用“s”作为命名空间前缀):
 var nl = document.SelectNodes("s:catalog/s:cd[@country='UK']", nsmgr);

关于XPath 查询在 C# 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27026802/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com