【问题标题】:SharePoint List Data as XML StringSharePoint 以 XML 字符串形式列出数据
【发布时间】:2011-09-17 18:46:31
【问题描述】:

我正在尝试使用 GetListItems Web 服务方法来检索列表中的所有项目。该方法引发了 InvalidOperation 异常,消息为“XML 文档中存在错误”。似乎至少有一个列值包含“非法”十六进制值......至少就 XML 节点而言。

除了一次拉回每个项目(并跳过“坏”项目)之外,有没有办法获取 GetListItems 返回的原始 XML 数据?我的想法是,如果我有原始字符串,我可以尝试在将其转换为 XML 节点(然后再转换为 DataTable)之前对其进行清理。

任何其他想法将不胜感激。

谢谢

杰森

【问题讨论】:

    标签: xml web-services sharepoint-2007 wss


    【解决方案1】:

    您能否验证返回的数据实际上是正确的 XML 数据,而不是 HTML 错误页面,例如 401 或 404 错误页面?

    【讨论】:

    • 是的。当我使用 Fiddler 时,我看到返回了 XML 数据。此外,当我修改查询以排除该列表项时,代码按预期工作。
    【解决方案2】:

    @Jason 我无法完全按照您的描述重现该问题,但我想尝试这种技术:

    1. 检查您的 VisualStudio,选项,调试,常规,取消选中“仅启用我的代码”选项
    2. 显示您的自动生成 Reference.cs ,将光标定位在您调用 GetListItems 的位置(即 XmlNode ndListItems = listService.GetListItems(sList, null, ndQuery, ndViewFields, "0" , ndQueryOptions, null); 然后按 F12(转到定义)

      1. 放置断点(和观察点)甚至更改自动生成的代码; 在这里,您可以检查(快速观看,或您最喜欢的技术)调用返回的 objec[] 结果 即:

        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://schemas.microsoft.com/sharepoint/soap/GetListItems", RequestNamespace="http://schemas.microsoft.com/sharepoint/soap/", ResponseNamespace="http://schemas.microsoft.com/sharepoint/soap/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public System.Xml.XmlNode GetListItems(string listName, string viewName, System.Xml.XmlNode query, System.Xml.XmlNode viewFields, string rowLimit, System.Xml.XmlNode queryOptions, string webID) {
        object[] results = this.Invoke("GetListItems", new object[] {
                    listName,
                    viewName,
                    query,
                    viewFields,
                    rowLimit,
                    queryOptions,
                    webID});
        
        Debug.WriteLine(results.Length);
        
        return ((System.Xml.XmlNode)(results[0]));
        

        }

    我期待知道这是否可以帮助您更好地识别或解决问题

    【讨论】:

    • 非常感谢您的回复,但自去年以来我一直没有在这方面工作。我不记得具体是怎么做的了,但我最终找到了导致问题的一个列表项,并修改了我的查询以排除那个。
    猜你喜欢
    • 1970-01-01
    • 2013-01-29
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    相关资源
    最近更新 更多