2011-09-15 47 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>