使用.NET使用REST Axis2 WS时无法进行XML序列化



我正试图使用带有RestSharp和Linq的C#.NET来使用Axis2 REST XML响应。然而,我似乎无法使用RestSharp或手动序列化XML响应。

这是Axis2:的XML响应示例

<ns:response xmlns:ns="http://com.some.where" xmlns:ax2488="http://com.some.where/xsd">
<ns:return xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ax2488:Book">
    <ax2488:field1>Orson Scott Card</ax2488:field1>
    <ax2488:field1>Some One Else</ax2488:field1>
    <ax2488:field2>1</ax2488:field2>
    <ax2488:isbn10>142996393X</ax2488:isbn10>
    <ax2488:isbn13>9781429963930</ax2488:isbn13>
    <ax2488:date>2010</ax2488:date>
    <ax2488:blah>Tom Doherty Associates</ax2488:blah>
    <ax2488:ssss>on loan</ax2488:ssss>
    <ax2488:name>Ender's Game Volume 1 of The Ender Quintet</ax2488:name>
</ns:return>

当我试图使用XElements(Linq)获得元素时,我总是得到null?

 var elements = root.Elements("Book");

我尝试了几个不同的元素名称,但没有成功。

此外,使用RestSharp,它成功地获得了第一个也是唯一的响应,但是如果我有多个响应,它会返回null。

 var response1 = _client.Execute<Book>(request);
 var response2 = _client.Execute<List<Book>>(request);

感谢您的帮助。

一种可能的方法,将XDocument与XPath查询一起使用:

using System.Xml.XPath;
var nsmgr = new XmlNamespaceManager(new NameTable());
//register prefixes for use in XPath
nsmgr.AddNamespace("ns", "http://com.some.where");
nsmgr.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
var xpath = "//ns:response/ns:return[@xsi:type='ax2488:Book']";
//above xpath consists of path from root to <ns:return> : //ns:response/ns:return
//and criteria for <ns:return> : [@xsi:type='ax2488:Book']
var doc = XDocument.Load("path_to_xml_file.xml");
var returnElements = doc.XPathSelectElements(xpath, nsmgr);

我假设您的XML结构大致如下:

<root>
    <ns:response xmlns:ns="http://com.some.where" xmlns:ax2488="http://com.some.where/xsd">
        <ns:return xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ax2488:Book">
            <ax2488:field1>Orson Scott Card</ax2488:field1>
            <ax2488:field1>Some One Else</ax2488:field1>
            <ax2488:field2>1</ax2488:field2>
            <ax2488:isbn10>142996393X</ax2488:isbn10>
            <ax2488:isbn13>9781429963930</ax2488:isbn13>
            <ax2488:date>2010</ax2488:date>
            <ax2488:blah>Tom Doherty Associates</ax2488:blah>
            <ax2488:ssss>on loan</ax2488:ssss>
            <ax2488:name>Ender's Game Volume 1 of The Ender Quintet</ax2488:name>
        </ns:return>
    </ns:response>
    <ns:response xmlns:ns="http://com.some.where" xmlns:ax2488="http://com.some.where/xsd">
        ........
    </ns:response>
    ........
    ........
</root>

相关内容

  • 没有找到相关文章

最新更新