Tag: selectedinglenode

为什么需要XmlNamespaceManager?

至less在.Net Framework中,为了处理命名空间(或相当笨拙和冗长的[local-name()=…必须使用XmlNamespaceManager [local-name()=… XPath谓词/函数/无论)执行XPath查询时。 我明白为什么命名空间是必要的或者至less是有益的,但为什么这么复杂呢? 为了查询一个简单的XML文档(没有命名空间)… <?xml version="1.0" encoding="ISO-8859-1"?> <rootNode> <nodeName>Some Text Here</nodeName> </rootNode> …可以使用像doc.SelectSingleNode("//nodeName") (这将匹配<nodeName>Some Text Here</nodeName> ) 神秘#1 : 我的第一个烦恼 – 如果我理解正确 – 是仅仅添加一个名称空间引用到父/根标记(不pipe是否用作子节点标记的一部分),如下所示: <?xml version="1.0" encoding="ISO-8859-1"?> <rootNode xmlns="http://someplace.org"> <nodeName>Some Text Here</nodeName> </rootNode> …需要几行额外的代码才能得到相同的结果: Dim nsmgr As New XmlNamespaceManager(doc.NameTable) nsmgr.AddNamespace("ab", "http://s+omeplace.org") Dim desiredNode As XmlNode = doc.SelectSingleNode("//ab:nodeName", nsmgr) …实质上是做一个不存在的前缀(“ ab ”)来find一个甚至不使用前缀的节点。 这有什么意义? 什么是错误的(概念上)与doc.SelectSingleNode("//nodeName") […]