使用 SharePoint Lists.asmx GetListItems 按名称搜索文档

本文关键字:搜索 文档 GetListItems SharePoint Lists asmx 使用 | 更新日期: 2023-09-27 17:57:54

这是我的代码:

StringBuilder sb = new StringBuilder();
sb.AppendLine(@"<Where><Lt>");
sb.AppendLine(@"<FieldRef Name=""FileRef"" /><Value Type=""Text"">momo.txt</Value>");
sb.AppendLine(@"</Lt></Where>");
XmlDocument xmlDoc = new System.Xml.XmlDocument();
XmlNode ndQuery = xmlDoc.CreateNode(XmlNodeType.Element, "Query", "");
ndQuery.InnerXml = sb.ToString();
XmlNode resultsElement1 = listsProxy.GetListItems("Documents", "", ndQuery,
                                                  null, null, null, "");

但它返回所有文档知道我在这里做错了什么吗?

谢谢。

使用 SharePoint Lists.asmx GetListItems 按名称搜索文档

目前,查询的对象是名称值小于 momo.text 而不是等于它的项目。因此,将Lt更改为Eq

FileRef字段包含文档的服务器相对 URL,类似于这样的" /Subsite/Lists/ListName/DocumentName "。如果您仅提供文件名(例如 mono.txt (,LtEq都不应该工作。

要解决此问题,您可以尝试:

  1. Eq与服务器相对 URL 一起使用,而不是文件名。
某人。AppendLine(@">"(; 某人。AppendLine(@'">/SubSite/Lists/Documents/momo.txt'"); 某人。AppendLine(@">"(;
  1. 或者,您可以使用<Contains>运算符(CAML 没有<EndsWith>运算符(。>
某人。AppendLine(@">"(; 某人。AppendLine(@'">/momo.txt'"); 某人。AppendLine(@">"(;

然后循环返回的结果,并删除不以" /mono.txt "结尾的项目。

此外,如果您关心不带扩展名的文档名称,则可以BaseName而不是FileRef字段。