gpt4 book ai didi

c# - 为什么这个 XPath 查询不返回任何节点?

转载 作者:数据小太阳 更新时间:2023-10-29 01:49:07 28 4
gpt4 key购买 nike

我正在查询 Sharepoint 服务器端并以 Xml 形式返回结果。在通过 WebMethod 将 Xml 发送到 jQuery 之前,我想将 Xml 精简成更轻量级的东西。

但是我的 XPath 查询不起作用。我以为下面的代码会返回所有文档节点,但它什么也没返回。我之前使用过 XPath,我认为 //Document 可以解决问题。

C# XPath 查询

XmlDocument xmlResults = new XmlDocument();
xmlResults.LoadXml(xml); // XML is a string containing the XML source shown below
XmlNodeList results = xmlResults.SelectNodes("//Document");

正在查询的 XML

<ResponsePacket xmlns="urn:Microsoft.Search.Response">
<Response domain="QDomain">
<Range>
<StartAt>1</StartAt>
<Count>2</Count>
<TotalAvailable>2</TotalAvailable>
<Results>
<Document relevance="126" xmlns="urn:Microsoft.Search.Response.Document">
<Title>Example 1.doc</Title>
<Action>
<LinkUrl size="32256" fileExt="doc">http://hqiis99/Mercury/Mercury documents/Example 1.doc</LinkUrl>
</Action>
<Description />
<Date>2010-08-19T14:44:56+01:00</Date>
</Document>
<Document relevance="31" xmlns="urn:Microsoft.Search.Response.Document">
<Title>Mercury documents</Title>
<Action>
<LinkUrl size="0" fileExt="aspx">http://hqiis99/mercury/Mercury documents/Forms/AllItems.aspx</LinkUrl>
</Action>
<Description />
<Date>2010-08-19T14:49:39+01:00</Date>
</Document>
</Results>
</Range>
<Status>SUCCESS</Status>
</Response>
</ResponsePacket>

最佳答案

您正在尝试选择没有命名空间的 Document 元素...而此处的默认命名空间实际上是“urn:Microsoft.Search.Response”。

我想你想要这样的东西:

XmlDocument xmlResults = new XmlDocument();
xmlResults.LoadXml(xml);
XmlNamespaceManager manager = new XmlNamespaceManager(xmlResults.NameTable);
manager.AddNamespace("ns", "urn:Microsoft.Search.Response.Document");
XmlNodeList results = xmlResults.SelectNodes("//ns:Document", manager);

这找到了两个元素。


如果您可以改用 LINQ to XML,这会让一切变得更容易:

XDocument results = XDocument.Parse(xml);
XNamespace ns = "urn:Microsoft.Search.Response.Document";
var documents = results.Descendants(ns + "Document");

我喜欢 LINQ to XML 的命名空间处理:)

关于c# - 为什么这个 XPath 查询不返回任何节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3529878/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com