gpt4 book ai didi

c# - 反序列化 SOAP XML 响应

转载 作者:数据小太阳 更新时间:2023-10-29 01:58:26 28 4
gpt4 key购买 nike

我在想出一种反序列化来自 Web 服务的 XML 响应的方法时遇到了麻烦。响应采用以下格式:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<providerDemographicsResponse xmlns="http://provapi.sys.test.com/provider/network/messages/providerDemographicsResponse/v1" xmlns:ns2="http://provapi.sys.test.com/provider/network/messages/providerAddress/v1" xmlns:ns3="http://provapi.sys.test.com/provider/network/messages/expandedProvider/v1" xmlns:ns4="http://provapi.sys.test.com/provider/network/messages/enrollmentDetails/v1" xmlns:ns5="http://provapi.sys.test.com/provider/network/messages/providerBusinessEntity/v1" xmlns:ns6="http://provapi.sys.test.com/provider/network/messages/providerNpoAssociation/v1" xmlns:ns7="http://provapi.sys.test.com/provider/network/messages/serviceAreaDetail/v1" xmlns:ns8="http://provapi.sys.test.com/provider/network/messages/networkProviderAddress/v1" xmlns:ns9="http://provapi.sys.test.com/provider/network/messages/delegationEntity/v1" xmlns:ns10="http://provapi.sys.test.com/provider/network/messages/providerSpecialty/v1" xmlns:ns11="http://provapi.sys.test.com/provider/network/messages/providerNpi/v1" xmlns:ns12="http://provapi.sys.test.com/provider/common/messages/metadata/v1">
<ns12:metadata>
<ns12:serviceReferenceId>test17-02-2016 16:05:47.000616</ns12:serviceReferenceId>
<ns12:limit>1</ns12:limit>
<ns12:offset>0</ns12:offset>
<ns12:total>1</ns12:total>
<ns12:outcome>
<ns12:status>200</ns12:status>
<ns12:message>Successful.</ns12:message>
<ns12:code>200</ns12:code>
<ns12:additionalDetails/>
</ns12:outcome>
</ns12:metadata>
<data>
<providerDemographics>
<cpfProviderId>0000010</cpfProviderId>
<effectiveDate>1980-01-01</effectiveDate>
<terminationDate>9999-12-31</terminationDate>
<provider-under-review-indicator>N</provider-under-review-indicator>
<providerTypeDescription>Healthcare Organization</providerTypeDescription>
</providerDemographics>
<providerDemographics>
<cpfProviderId>0000010</cpfProviderId>
<effectiveDate>1980-01-01</effectiveDate>
<terminationDate>9999-12-31</terminationDate>
<provider-under-review-indicator>N</provider-under-review-indicator>
<providerTypeDescription>Healthcare Organization</providerTypeDescription>
</providerDemographics>
</data>
</providerDemographicsResponse>

我有这个类来获取 XML 底部的 providerDemographics 列表:

public class ProviderDemographics {

[XmlAttribute(AttributeName = "cpfProviderId")]
public int CpfProviderId { get; set; }

[XmlAttribute(AttributeName = "effectiveDate")]
public DateTime EffectiveDate { get; set; }

[XmlAttribute(AttributeName = "terminationDate")]
public DateTime TerminationDate { get; set; }

[XmlAttribute(AttributeName = "provider-under-review-indicator")]
public string ProviderUnderReviewIndicator { get; set; }

[XmlAttribute(AttributeName = "providerTypeDescription")]
public string ProviderTypeDescription { get; set; }

}

我尝试使用常规的 XmlSerializer 对其进行反序列化,但出现异常(我认为与 namespace 的数量有关,但我不完全确定)。我也尝试过使用 Linq,但是当我尝试对 XDocument 进行 parising 时,我得到一个空列表。

XDocument doc = XDocument.Parse(xml);

var list = (from d in doc.Descendants("providerDemographics")
select new ProviderDemographics {
CpfProviderId = (int)d.Attribute("cpfProviderId")
}).ToList();

知道如何从响应中提取 providerDemographics 作为列表吗?

最佳答案

搜索元素时需要添加命名空间。因为您想要的元素没有任何特定的命名空间,所以您应该采用父元素命名空间。在这种情况下,它是 providerDemographicsResponse

namespace

这是工作示例:

        static void Main(string[] args)
{
string xml = "your provided Xml"

XDocument doc = XDocument.Parse(xml);

XNamespace metadataNameSpace = "http://provapi.sys.test.com/provider/common/messages/metadata/v1";
XNamespace headNameSpace = "http://provapi.sys.test.com/provider/network/messages/providerDemographicsResponse/v1";

//if you want tags providerDemographics
var list = (from d in doc.Descendants(headNameSpace + "providerDemographics")
select new
{
CpfProviderId = d.Element(headNameSpace + "cpfProviderId").Value
}).ToList();

//if you want metadata tags data
var metaDatalist = (from d in doc.Descendants(metadataNameSpace + "metadata")
select d).ToList();

Console.ReadKey();

}

关于c# - 反序列化 SOAP XML 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35486330/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com