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

问题描述

|| 这是我的代码
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,\"\");
但是它将所有文档返回任何想法,我在这里做错了什么? 谢谢。     

解决方法

        
FileRef
字段包含文档的服务器相对URL,类似\\“2ѭ\”。如果仅提供文件名(例如“ 3”),则“ 4”或“ 5”都不起作用。 要解决此问题,您可以尝试: 相对于服务器的URL使用ѭ5代替文件名。 sb.AppendLine(@ \“ \”); sb.AppendLine(@ \“ / SubSite / Lists / Documents / momo.txt \”); sb.AppendLine(@ \“ \”); 或者,您可以使用
<Contains>
运算符(CAML没有<
EndsWith>
运算符)。 sb.AppendLine(@ \“ \”); sb.AppendLine(@ \“ / momo.txt \”); sb.AppendLine(@ \“ \”); 然后循环返回的结果,并删除不以\“
/mono.txt
\”结尾的项目。 另外,如果您关心不带扩展名的文档名称,则可以用“ 10”代替“ 1”字段。     ,        当前,您的查询是针对名称值小于
momo.text
而不是等于items12的项目。因此将
Lt
更改为
Eq
。