Monodevelop解析SOAP 响应

本文关键字:响应 SOAP 解析 Monodevelop | 更新日期: 2023-09-27 18:32:18

已经

阅读了这个和其他论坛几个小时和几天了,找不到我的肥皂响应的解决方案。一直在这里尝试各种答案,但无法解析我的回答:(

我的回应 :

<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
        <getLocationsResponse xmlns="http://getlocations.ws.hymedis.net">
            <locs>
                <loc>
                    <name>Zeebrugge Wielingen Zand</name>
                    <abbr>ZWZ</abbr>
                    <RDX>1435.8</RDX>
                    <RDY>378678.6</RDY>
                    <params>
                        <param>GHs</param>
                        <param>SS10</param>
                    </params>
                </loc>
            </locs>
        </getLocationsResponse>
    </soapenv:Body>
</soapenv:Envelope>

到目前为止我的 c# 代码(param soapresponse 是字符串格式的整个 soapresponse)我的响应是正确的,所以完整的 xml soap 响应,但无法很好地解析它

public void readXml(string soapresponse){
        XmlDocument xmlresponse = new XmlDocument();
        xmlresponse.LoadXml(soapresponse);
        XmlNamespaceManager nsmanager = new XmlNamespaceManager(xmlresponse.NameTable);
        nsmanager.AddNamespace ("soapenv", "http://schemas.xmlsoap.org/soap/envelope/");
        XmlNodeList nodes = xmlresponse.SelectNodes("/soapenv:Envelope/soapenv:Body/getLocationsResponse/locs/loc", nsmanager);
        List<Locatie> locatielijst = new List<Locatie>();
        // loop
        foreach(XmlNode node in nodes){
            string loc_naam = node["name"].InnerText;
            string loc_code = node["abbr"].InnerText;
            ...
            Locatie locatie = new Locatie();
            locatie.loc_naam = loc_naam;
            locatie.loc_code = loc_code;
            ...
            locatielijst.Add (locatie);
        }
        Console.WriteLine(locatielijst.Count.ToString());
        foreach(Locatie loc in locatielijst){
            Console.WriteLine (loc.loc_code);
        }
    }

但是每次我的 list.count 返回 0 -> 所以其中没有数据.. 请帮助我!

Monodevelop解析SOAP 响应

以下代码可能有效。

   公共类 主类    {        公共静态空 主(字符串[] 参数)        {            var response = new FileStream("Response.xml", FileMode.Open);            XDocument doc = XDocument.Load(response);            XNamespace xmlns = "http://getlocations.ws.hymedis.net";            VaR 节点 = 文档。后代(xmlns + "locs")                                .元素(xmlns + "loc");            var list = new list();            foreach (节点中的 var 节点)            {                列表。添加(新位置 {                    名称 = 节点。元素(xmlns + "name").价值                    代码 = 节点。元素(xmlns + "abbr").价值                });            }            foreach (列表中的变量项) {                Console.WriteLine(item.代码);            }        }        公开课位置        {            公共字符串代码 { get; set; }            公共字符串名称 { get; set; }        }    }

我对 mono 没有太多经验,但 .net 使使用 WCF SOAP 服务变得非常容易。本文介绍如何为 WCF 服务生成代理类:http://johnwsaunders3.wordpress.com/2009/05/17/how-to-consume-a-web-service/

我希望这有所帮助。

问候沃特·威拉特