将下划线和句点与 XPath 一起使用
本文关键字:一起 XPath 下划线 句点 | 更新日期: 2023-09-27 18:33:51
我需要选择一个具有属性name
的节点作为_1.1.1
我正在尝试选择节点作为
XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlDoc.NameTable);
nsmgr.AddNamespace("IKS", "http://schemas.microsoft.com/wix/2006/objects");
XmlNode xRootNode = xmlDoc.SelectSingleNode("//folder[@name='Global']");
但它不会返回任何内容。我敢肯定这是因为我的表情中的特殊字符。我应该如何处理它以获得所需的节点?
编辑:我访问节点为
XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlDoc.NameTable);
nsmgr.AddNamespace("IKS", "http://schemas.microsoft.com/wix/2006/objects");
XmlNode xRootNode = xmlDoc.SelectSingleNode("//folder[@name='Global']", nsmgr);
而 XML 是
<?xml version="1.0" encoding="UTF-8"?>
<workplace xmlns='IKS:'>
<cabinet name='Groups%20and%20Departments' oid='_1.25.18'>
<folder name='Global' oid='_1.11.9882'></folder>
</cabinet>
</workplace>
你非常接近拥有正确的方法。您已经声明了一个命名空间前缀,但您需要实际使用它:
XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlDoc.NameTable);
nsmgr.AddNamespace("IKS", "http://schemas.microsoft.com/wix/2006/objects");
XmlNode xRootNode = xmlDoc.SelectSingleNode("//IKS:folder[@name='Global']");
// ^^^^------- here
注意:由于某种原因,您的 XML 中具有xmlns="IKS:"
。如果这实际上是您的 XML 的外观,那么您需要使用的命名空间 URI IKS:
:
XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlDoc.NameTable);
nsmgr.AddNamespace("IKS", "IKS:");
XmlNode xRootNode = xmlDoc.SelectSingleNode("//IKS:folder[@name='Global']");