使用 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, "");
但它返回所有文档知道我在这里做错了什么吗?
谢谢。
目前,查询的对象是名称值小于 momo.text
而不是等于它的项目。因此,将Lt
更改为Eq
。
FileRef
字段包含文档的服务器相对 URL,类似于这样的" /Subsite/Lists/ListName/DocumentName
"。如果您仅提供文件名(例如 mono.txt
(,Lt
或Eq
都不应该工作。
要解决此问题,您可以尝试:
- 将
Eq
与服务器相对 URL 一起使用,而不是文件名。
某人。AppendLine(@">"(; "(; 某人。AppendLine(@'"> /SubSite/Lists/Documents/momo.txt '"); 某人。AppendLine(@">
- 或者,您可以使用
<Contains>
运算符(CAML 没有<EndsWith>
运算符(。>
某人。AppendLine(@">"(; "(; 某人。AppendLine(@'"> /momo.txt '"); 某人。AppendLine(@">
然后循环返回的结果,并删除不以" /mono.txt
"结尾的项目。
此外,如果您关心不带扩展名的文档名称,则可以BaseName
而不是FileRef
字段。