2011-09-17 7 views
2

リストのすべての項目を取得するためにGetListItems Webサービスメソッドを使用しようとしています。このメソッドは、メッセージが「XML文書にエラーがあります」というInvalidOperation例外を発生させています。それは少なくとも列の値の1つが "違法な" 16進値を含んでいるようです...少なくともXMLノードが行く限り。SharePointリストデータをXMLストリングとして

各アイテムを1つずつ取り戻すだけでなく(「悪い」アイテムをスキップする)、GetListItemsから返された生のXMLデータを取得する方法はありますか?私の考えは、生の文字列があれば、それをXMLノードに変換する前にそれを消毒しようとすることができます(そして、後でDataTableに変換する)。

他のアイデアをいただければ幸いです。

おかげ

ジェイソン

答えて

0

あなたが返されるデータは、401または404エラーページとして実際に正しいXMLデータではなくHTMLのエラーページであることを確認することはできますか?

+0

はい。 Fiddlerを使用すると、XMLデータが返されることがわかります。また、その1つのリスト項目を除外するクエリを変更すると、コードは期待どおりに機能します。 – Jason

0

@Jason私はあなたが説明したとおりに問題を再現することができませんでしたが、私はこのテクニックを試してみたいと思います:あなたのVisualStudioで

  1. チェック、オプション、デバッグ、一般的には、「マイコードのみを有効にするオプションをunchek 「
  2. あなたはGetListItemsを呼んでカーソルを置き、あなたの自動生成Reference.csを明らかに(つまり、XmlNodeのndListItems = listService.GetListItems(SLIST、ヌル、ndQuery、ndViewFields、 "0"、ndQueryOptions)は、null; 、その後、プレF12(定義に移動)

    1. ブレークポイント(およびウォッチポイント)を挿入するか、自動生成されたコードを変更することもできます。

      [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])); 
      

      }

私は楽しみにしています:ここ あなたは(クイックウォッチ、またはお気に入りのtecnique)呼び出し すなわちによって返さOBJEC [] restultsを検査することができる可能性これが問題の特定または解決に役立つかどうかを確認する

+1

ありがとうございましたが、私は昨年からこれに取り組んでいません。私はどのように行ったのか正確には覚えていませんが、問題を引き起こしていたリスト項目の1つを追跡して除外しました。 – Jason

関連する問題