2011-11-18 81 views
0

我使用此代碼從名爲Tech Experience的資產庫中使用List WebService獲取SharePoint 2010中的項目列表。從sharepoint 2010獲取數據時發生特殊字符問題

ListService.Lists objLists = new ListService.Lists(); 
       objLists.Credentials = Constant.credentials; 
       objXMLDocument = new XmlDocument(); 
       objXMLDocument.LoadXml("<QueryOptions><IncludeMandatoryColumns>FALSE</IncludeMandatoryColumns><Folder>Tech Experience</Folder><ViewAttributes Scope=\"RecursiveAll\" /></QueryOptions>"); 
       XmlNode objQueryOptions = objXMLDocument.DocumentElement; 
       resultXml = objLists.GetListItems("Tech Experience", null, null, null, "100", objQueryOptions, null); 

它在執行給定代碼中的最後一行時引發此錯誤「Error in xml Document」。

但是,如果我改變資產庫中的loadxml(即從科技Exprience其他),它工作正常。

什麼,我覺得到現在爲止是,這個資源庫可用項目的描述包含一些特殊字符,如(」,「<,>,&),它是創造問題。

請糾正我,如果我我錯了。

我不能要求我的客戶不要在上傳新文件中使用這些字符。

請建議我怎麼能解決這個問題。

我會喜歡如果可能的話,在C#部分提供解決方案。

回答

1

如果我正確理解你,你的客戶端會發送包含無效XML的XML文件。這些字符在XML中有轉義序列;你確定你不能要求你的客戶使用它們並向你發送格式良好的XML嗎?

+0

事情是sharepoint 2010生成xml,所以沒有生成xml的代碼。所以我現在唯一能想到的就是將功能安裝到可以刪除這些特殊字符的SharePoint站點,我將考慮最後一個選項。 – Mohit

+1

您可以將文件加載爲FileStream並嘗試替換無效字符。正則表達式會是最痛苦的,因爲您需要非常小心,不要在流程中搞亂有效的XML。 – sq33G

+1

在Google上找到[this](https://social.msdn.microsoft.com/Forums/da-DK/sharepoint2010general/thread/b409a8b7-652b-4a16-9eee-6af9c9259e65?stoAI=10&wa=wsignin1.0) - 是你確定你知道哪些字符導致了這個問題?有問題的文件夾中的項目是否在SharePoint中正確顯示? – sq33G

0

「Tech Experience」列表名稱...您確定您使用的是內部列表名稱而不是顯示名稱?