C# 读取xml 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

当我向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-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文件。这将创建强类型方法和属性,供您在应用程序中使用。