【问题标题】:How to retrieve a collection out of an SOAP message如何从 SOAP 消息中检索集合
【发布时间】:2011-02-15 10:22:54
【问题描述】:

我正在使用 Web 服务来根据特殊的公司编号呈现公司信息。 但我无法从响应 SOAP 消息中获取数据。 您可以看到响应肥皂消息的示例。 (我在标签上省略了一些公司信息)。

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<businessGetDossierV3Response xmlns="http://www.webservices.nl/soap/">
<out>
<paging>
<curpage>1</curpage>
<perpage>10</perpage>
<numpages>1</numpages>
<numresults>1</numresults>
<maxresults>100</maxresults>
</paging>
<results>
<item>
<DossierNo></DossierNo>
<SubDossierNo></SubDossierNo>
<ChamberNo></ChamberNo>
<Legalformcode></Legalformcode>
<LegalformcodeText></LegalformcodeText>
<Tradename45></Tradename45>
<EstablishmentPostcode></EstablishmentPostcode>
<EstablishmentCity></EstablishmentCity>
<EstablishmentStreetname></EstablishmentStreetname>
<EstablishmentHouseNo></EstablishmentHouseNo>
<CorrespondencePostcode></CorrespondencePostcode>
<CorrespondenceCity></CorrespondenceCity>
<CorrespondenceStreetname></CorrespondenceStreetname>
<CorrespondenceHouseNo></CorrespondenceHouseNo>
</item>
</results>
</out>
</businessGetDossierV3Response>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

!这是我在演示客户端上看到的结果! 但这是我在 C# 中的代码

        nl.webservices.ws1.BusinessDossierV3PagedResult result = null;
        result = myserviceBusiness.businessGetDossierV3(KVKnr, "0000", 1);

我想做这样的事情(但用结果而不是分页部分)

int page = result.paging.numpages;

那我想我应该是这样的

string city = result.results.item.CorrespondenceCity;

但这是给出错误信息

所以在 Visual Studio 2010 中,我只能检索 xml 分页部分中的数据并将其放入文本框中,但不能从结果部分中检索。这是因为结果部分是某种集合吗?

是的,我怎样才能将标签 EstablishmentPostcode 和 EstablishmentCity 中的数据放入默认页面的文本框中?

提前致谢

【问题讨论】:

    标签: c# asp.net web-services soap


    【解决方案1】:

    您可以尝试将您的 SOAP 服务添加为项目的 Web 引用。 http://msdn.microsoft.com/en-us/library/tydxdyw9.aspx

    如果您不想这样做,而是希望直接处理 XML,您可以使用 xpath 来访问结果元素中的所有 item 元素。 http://www.stardeveloper.com/articles/display.html?article=2009031001&page=1

    使用 xpath 时要注意的一点是,您要为尝试选择的节点使用正确的 xml 命名空间。

    【讨论】:

    • 嗨,Ben,已经对 SOAP 进行了引用。我使用与邮政编码 web 服务相同的 web 参考(完美运行),邮政编码和这个(businessGetDossierV3)webservice 来自同一个提供商(webservices.nl)。所以我创建了这个服务的一个实例,然后调用完成工作的方法并将该方法的结果放入一个对象中。但是现在我不知道如何将结果放入字符串对象(因为结果对象是一种特殊类型,无法类型转换为字符串)。
    • 您不能将其转换为字符串,您可以对其调用 ToString() 方法,但这可能不会给您预期的结果。您需要迭代集合并随时构建一个字符串。谷歌“foreach”和 StringBuilder。
    • 如果我迭代与否,我仍然无法调用例如 CorrespondenceStreetname 标签中的值
    • result.results 属性的类型是什么?你试过 string city = result.results[0].CorrespondenceCity;
    • 你是英雄 Ben :) 现在我可以加载这些属性了
    猜你喜欢
    • 1970-01-01
    • 2021-06-28
    • 2013-10-23
    • 2013-01-11
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多