Tag: chooseinglenode

SelectSingleNode总是返回null?

以这个简化的XML示例为例: Invalid Login 我试图使用SelectSingleNode方法选择’错误’节点,但是使用以下代码它总是返回NULL? XmlNode errorNode = oss.SelectSingleNode(“/message/error”); if (errorNode != null) Console.Writeline(“There is an error”); 从研究我已经做到这与命名空间有关,但我根本无法得到任何工作。 任何建议?

在SelectSingleNode中使用XPath:从XML中检索单个元素(如果存在)

我的XML看起来像: one two three …..maybe more Items here. 某些个别物品可能存在也可能不存在。 假设我想要检索元素 two 如果它存在)。 我尝试了以下XPath(在C#中)。 XMLNode node = myXMLdoc.SelectSingleNode(“/itemSet[Item=’two’]”) —如果第2项存在,那么它只返回第一个第一个元素。 也许这个查询只指向itemSet中的第一个元素,如果它在某个地方有一个值为2的Item作为子元素。 这种解释是否正确? 所以我尝试过: XMLNode node = myXMLdoc.SelectSingleNode(“/itemSet[Item=’two’]/Item[1]”) —我读了这个查询,返回itemSet中第一个具有value =’two’的元素。 我对么? 这仍然只返回第一个元素。 我究竟做错了什么? 在这两种情况下,使用兄弟姐妹我可以遍历子节点并获得两个 ,但这不是我正在看的。 如果两个不存在,则SelectSingleNode返回null。 因此,我获得一个成功的返回节点的事实确实表明存在元素二,所以如果我想要一个布尔测试chk存在两个 ,任何上述XPath就足够了,但实际上我需要完整的元素two作为我的返回节点。 [我的第一个问题,也是我第一次使用网络编程,所以我刚刚从过去的SO问题中学到了上面的XPath和相关的xml内容。 所以请保持温和,让我知道如果我是一个doofus或蔑视任何社区规则。 谢谢。]

使用SelectSingleNode()方法需要哪个命名空间(使用默认命名空间而不能使用该方法)

嗨,我有使用不同命名空间的xml文件(实际上是msbuild文件) Value 但问题是因为我不能将SelectSingleNode与该文件一起使用 xmlns=”http://schemas.microsoft.com/developer/msbuild/2003″ 我相信它是因为默认命名空间(方法必需)因为上面的xmlns而消失了。 然后我想我只需要为此添加必要的……但我的尝试根本没有成功。 能否请您快速举例说明如何做到这一点? 我是这样做的。 (我也尝试添加多个名称空间,但没有成功..) XmlDocument xml = new XmlDocument(); xml.Load(“ref.props”); XmlNamespaceManager nsmgr = new XmlNamespaceManager(xml.NameTable); nsmgr.AddNamespace(“msbld”, “http://schemas.microsoft.com/developer/msbuild/2003”); XmlNode platform_node = xml.SelectSingleNode(“//msbld:PropertyGroup[contains(@Condition, ‘1111’)]”, nsmgr);