У меня возникли проблемы с определением способа десериализации ответа XML от веб-службы. Ответ приходит в следующем формате:Deserialize SOAP XML Response
<?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>
У меня есть этот класс, чтобы получить в списке providerDemographics в нижней части XML:
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 для десериализации, но я получить исключение (я думаю, что касается количества пространств имен, но я не совсем уверен). Я также пытался использовать Linq, но когда я пытаюсь выполнить парирование XDocument, я получаю пустой список.
XDocument doc = XDocument.Parse(xml);
var list = (from d in doc.Descendants("providerDemographics")
select new ProviderDemographics {
CpfProviderId = (int)d.Attribute("cpfProviderId")
}).ToList();
Любая идея о том, как я могу извлечь данные о поставщике в виде списка из ответа?
Проверьте свой ответ и скажите мне, если вам помог. – mybirthname