C# 读取xml web响应
当我向Web服务发送请求时,会得到以下响应:C# 读取xml web响应,c#,xml,web-services,soap,C#,Xml,Web Services,Soap,当我向Web服务发送请求时,会得到以下响应: <?xml version="1.0" encoding="UTF-8"?>n<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/> <SOAP-EN
<?xml version="1.0" encoding="UTF-8"?>n<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/>
<SOAP-ENV:Body xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<web:xxxResponse xmlns:web="http://xxxxx">
<Repliek>
<Antwoorden>
<Antwoord>
<Referte>xxx</Referte>
<Inhoud>
<Persoon>
<INSZ>xxx</INSZ>
<Naam>
<Achternamen>
<Achternaam>xx</Achternaam>
</Achternamen>
<Voornamen>
<Voornaam>x x</Voornaam>
</Voornamen>
</Naam>
<Geslacht>
<Code Beschrijving="Mannelijk">1</Code>
</Geslacht>
<Beheerder DatumBegin="2014-03-11">
<Plaats>
<Gemeente>
<NISCode>x</NISCode>
<Naam>x</Naam>
</Gemeente>
<Land>
<NISCode>x</NISCode>
<ISOCode>x</ISOCode>
<Naam>x</Naam>
</Land>
</Plaats>
<Taalregime>
<Code Beschrijving="taal">x</Code>
</Taalregime>
</Beheerder>
<Geboorte DatumBegin="yyyy-mm-dd">
<Datum>yyyy-mm-dd</Datum>
<Plaats>
<Gemeente>
<NISCode>xx</NISCode>
<Naam>xx</Naam>
</Gemeente>
<Land>
<NISCode>xx</NISCode>
<ISOCode>xx</ISOCode>
<Naam>xx</Naam>
</Land>
</Plaats>
</Geboorte>
<BurgerlijkeStaten>
<BurgerlijkeStaat DatumBegin="yyyy-mm-dd">
<Code Beschrijving="Gehuwd">x</Code>
<Partner>
<INSZ>xx</INSZ>
<Naam>
<Achternamen>
<Achternaam>x</Achternaam>
</Achternamen>
<Voornamen>
<Voornaam>x</Voornaam>
</Voornamen>
</Naam>
</Partner>
<Plaats>
<Gemeente>
<NISCode>x</NISCode>
<Naam>x</Naam>
</Gemeente>
<Land>
<NISCode>x</NISCode>
<ISOCode>x</ISOCode>
<Naam>xx</Naam>
</Land>
</Plaats>
</BurgerlijkeStaat>
</BurgerlijkeStaten>
<Adressen>
<Hoofdverblijfplaats DatumBegin="yyyy-mm-dd">
<Straat>
<Code>x</Code>
<Naam>xxx</Naam>
</Straat>
<Huisnummer>x</Huisnummer>
<Gemeente>
<NISCode>x</NISCode>
<PostCode>x</PostCode>
<Naam>x</Naam>
</Gemeente>
<Land>
<NISCode>x</NISCode>
<ISOCode>x</ISOCode>
<Naam>x</Naam>
</Land>
</Hoofdverblijfplaats>
</Adressen>
</Persoon>
</Inhoud>
</Antwoord>
</Antwoorden>
</Repliek>
</web:xxxResponse>
</SOAP-ENV:Body>
</soapenv:Envelope>
现在,我想阅读这个回复并使用数据。目前,我可以通过执行以下操作来实现这一点:
var response = wr.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string responseFromServer = reader.ReadToEnd();
XmlDocument xmlResponse = new XmlDocument();
xmlResponse.LoadXml(responseFromServer);
XmlNodeList persoon = xmlResponse.GetElementsByTagName("Persoon");
string naam = "";
foreach (XmlNode per in persoon)
{
XmlNodeList voornamenNodes = per.SelectNodes("Naam/Voornamen");
foreach (XmlNode node in voornamenNodes)
{
XmlNode voornaamNode = node.SelectSingleNode("Voornaam");
if (voornaamNode != null)
{
naam = voornaamNode.InnerText;
}
}
XmlNode naamNodes = per.SelectSingleNode("Naam");
if (naamNodes!= null)
{
XmlNodeList achternamenNodes = per.SelectNodes("Naam/Achternamen");
foreach (XmlNode node in achternamenNodes)
{
XmlNode achternaamNode = node.SelectSingleNode("Achternaam");
if (achternaamNode != null)
{
naam += " " + achternaamNode.InnerText;
}
}
}
}
naamLabel.Text = naam;
但是,如果必须对每个节点执行此操作,那么读取xml似乎需要很多工作。我想知道是否有更简单的方法来读取xml并从中提取数据
有什么想法吗?考虑到它是一个SOAP web服务,我希望您能够为它自动生成一个SOAP客户端。即使您确实希望直接处理XML,我也肯定会使用LINQtoXML而不是旧的DOM API。您应该能够在解决方案中添加服务引用,将其指向wsdl文件。这将创建强类型方法和属性,供您在应用程序中使用。