1

ListsWebサービスを使用してSharePoint2007リストにいくつかのアイテムを挿入しています。応答で報告されたエラーを処理するコードを記述しようとしていますが、XMLのナビゲートが期待どおりに機能していません。Result要素のコレクションを取得しようとしています。次に、各ResultのErrorCode子要素でエラーコードを確認します。2番目の結果のErrorCodeを取得しようとすると、2番目のResult要素でSelectSingleNodeを呼び出しているにもかかわらず、最初の結果のErrorCodeが再び表示されるように見えます。私は何が間違っているのですか?これが私のデータとコードです(短くするためにほとんどのz:row属性は省略されています):

SharePointの応答:

- <Results xmlns="http://schemas.microsoft.com/sharepoint/soap/">
    - <Result ID="1,New">
          <ErrorCode>0x00000000</ErrorCode> 
          <ID /> 
          <z:row ows_ContentTypeId="0x0100760B0FF12756D249834F5B18A46B1A31" ows_Title="Seas-a-1-1-Target1" ows_PointID="1" ows_X_x0020_Value="355.000000000000" ... xmlns:z="#RowsetSchema" /> 
      </Result>
    - <Result ID="2,New">
          <ErrorCode>0x80020005</ErrorCode> 
          <ErrorText>The operation failed because an unexpected error occurred. (Result Code: 0x80020005)</ErrorText> 
      </Result>
  </Results>

コード:

System.Xml.XmlNode response = listService.UpdateListItems("SCs", batchElement);

XmlNamespaceManager nsm = new XmlNamespaceManager(response.OwnerDocument.NameTable);
nsm.AddNamespace("sp", response.NamespaceURI);

XmlNodeList results = response.SelectNodes("//sp:Result", nsm);
foreach (XmlNode result in results)
{
    System.Diagnostics.Debug.WriteLine(result.OuterXml);
    XmlNode node = result.SelectSingleNode("//sp:ErrorCode", nsm);
    System.Diagnostics.Debug.WriteLine(node.OuterXml);
}

出力:

<Result ID="1,New" xmlns="http://schemas.microsoft.com/sharepoint/soap/"><ErrorCode>0x00000000</ErrorCode><ID /><z:row ows_ContentTypeId="0x0100760B0FFF2756D249834F5B18A46B1A31" ows_Title="Seas-a-1-1-Target1" ows_PointID="1" ows_X_x0020_Value="355.000000000000" ... xmlns:z="#RowsetSchema" /></Result>
<ErrorCode xmlns="http://schemas.microsoft.com/sharepoint/soap/">0x00000000</ErrorCode>
<Result ID="2,New" xmlns="http://schemas.microsoft.com/sharepoint/soap/"><ErrorCode>0x80020005</ErrorCode><ErrorText>The operation failed because an unexpected error occurred. (Result Code: 0x80020005)</ErrorText></Result>
<ErrorCode xmlns="http://schemas.microsoft.com/sharepoint/soap/">0x00000000</ErrorCode>
4

1 に答える 1

1

試してみてください:

XmlNode node = result.SelectSingleNode(".//sp:ErrorCode", nsm); 

問題は、//sp:ErrorCode「ドキュメントのルートから始まるすべてのエラー コード ノード」を意味することだと思いますが、必要なのは結果ノードの下のエラー コード ノードです。

于 2012-06-19T18:15:54.033 に答える