阅读xml web响应

时间:2015-04-23 07:11:02

标签: c# xml web-services soap

当我向网络服务发送请求时,我得到以下回复:

<?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并从中提取数据。

有什么想法吗?

0 个答案:

没有答案