c# - LINQ to XML 选择带前缀的根元素
问题描述
我有一个简单的 xml 文档
<n1:data xmlns:n1="http://test.com/types" xmlns="http://test.com/basic" xmlns:n2="http://test.com/value">
<n2:value>Test</n2:value>
</n1:data>
我需要根据我从外部代码收到的 XPath 查询来选择其中的元素。除根元素外,选择工作正常。这是我用于元素选择的代码
NameTable nameTable = new NameTable();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(nameTable);
nsmgr.AddNamespace("n1", "http://test.com/types");
nsmgr.AddNamespace("n2", "http://test.com/value");
var xpathQueryN1 = "//n1:data";
var xpathQueryN2 = "//n2:value";
var elementN1 = xmlContent.XPathSelectElement(xpathQueryN1, nsmgr);
var elementN2 = xmlContent.XPathSelectElement(xpathQueryN2, nsmgr);
第一个xpathQuery将返回null
,第二个将返回一个元素。我也尝试过像这样的查询
var xpathQueryN1 = "./n1:data";
var xpathQueryN1 = "n1:data";
但他们都不会返回data
元素。唯一的方法是使用
var xpathQueryN1 = ".";
为什么显式 xpathn1:data
不起作用?
解决方案
推荐阅读
- bash - 通过 bash 过滤 json - 不区分大小写
- react-native - 为多个应用程序使用单个 expo 代码库
- swift - 我想禁用“发布”按钮并在选择图像后再次启用它?
- c# - Unity - 像声波一样运行循环而不会摔倒
- ios - AVFoundation 相机预览层与水平方向不匹配(Swift 4)
- mysql - 想要根据(贷方金额 > 100k)和借方金额(>=90% 贷方金额和 <=105% 贷方金额)查找交易
- php - Laravel 记录到 Slack 工作簿会导致“Curl 错误(代码 3):
畸形” - mysql - 如何根据tableB记录行在tableA中插入多条记录?
- python - 用python配置文件
- amazon-web-services - 尝试从私有 EC2 连接时,海王星抛出“主机没有及时响应”