2011-09-15 109 views
1

我使用下面的代碼將項目添加到列表SP,usign Web服務:選擇與XmlNode.selectSingleNode節點

XmlNode returnValue = lists.UpdateListItems("Facturas", batchElement); 
XmlNodeList errors = returnValue.SelectNodes("/Results"); 
if (errors.Count != 1) 
{ 
    Console.WriteLine("errors.Count es " + errors.Count); 
    Console.ReadKey(); 
    return -1; 
} 
Console.WriteLine("Error " + errors[0].Value + " -> " + int.Parse(errors[0].Value)); 

errors.OuterXml返回下面的XML(z的屬性:行有被省略)

<Results xmlns="http://schemas.microsoft.com/sharepoint/soap/"> 
    <Result ID="1,New" xmlns="http://schemas.microsoft.com/sharepoint/soap/"> 
    <ErrorCode>0x00000000</ErrorCode> 
    <ID /> 
    <z:row ows_ContentTypeId="0x010031045FE2D0730F499569DE68AFDB3F0B" ... xmlns:z="#RowsetSchema" /> 
    </Result> 
</Results> 

當我運行代碼,我總是拿到errors.Count是0。我曾嘗試以下參數的SelectNodes方法:

ErrorCode 
//ErrorCode 
/Results 
Results 
*[local-name() = 'ErrorCode'] 
/*[local-name() = 'Results'] 

而且,我改變了我的代碼:

​​

和詭計查詢soap:ErrorCoders:ErrorCode沒有得到任何東西。

回答

4
var doc = new XmlDocument(); 
doc.Load("1.xml"); 


var nsmgr = new XmlNamespaceManager(doc.NameTable); 
nsmgr.AddNamespace("soap", "http://schemas.microsoft.com/sharepoint/soap/"); 

var results = doc.SelectSingleNode("/soap:Results", nsmgr); 
var errorcode = doc.SelectSingleNode("/soap:Results/soap:Result/soap:ErrorCode", nsmgr); 

Console.WriteLine(errorcode.InnerText); 

示例XML:

<Results xmlns="http://schemas.microsoft.com/sharepoint/soap/"> 
    <Result ID="1,New" xmlns="http://schemas.microsoft.com/sharepoint/soap/"> 
    <ErrorCode>0x00000000</ErrorCode> 
    <ID /> 
    <z:row ows_ContentTypeId="0x010031045FE2D0730F499569DE68AFDB3F0B" xmlns:z="#RowsetSchema" /> 
    </Result> 
</Results>