我需要选择一个具有属性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>发布于 2014-12-10 10:28:28
你离正确的方法很近了。您已经声明了一个名称空间前缀,但是您需要实际使用它:
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']");https://stackoverflow.com/questions/27397498
复制相似问题