我需要选择属性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>
答案 0 :(得分:4)
你非常接近正确的方法。您已声明了名称空间前缀,但您需要实际使用它:
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的样子,那么IKS:
是您需要使用的名称空间URI:
XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlDoc.NameTable);
nsmgr.AddNamespace("IKS", "IKS:");
XmlNode xRootNode = xmlDoc.SelectSingleNode("//IKS:folder[@name='Global']");