简体   繁体   中英

How to get values from XML?

I have a really long XML string which comes from a web service. I need to read data from coming xml. I have searched too much but many examples are for just a few depth structure. My XML is a bit deeper

<?xml version="1.0" encoding="utf-8" ?>
<root>
  <node1>
    <node11>50002</node11>
    <node12>Schools</node12>
    <node13>
      <node131>8</node131>
      <node132>School 1</node132>
      <node133>
        <node1331>22</node1331>
        <node1332>Department 1</node1332>
        <node1333>
          <node13331>1</node13331>
          <node13332>Branch 1</node13332>
          <node13333>
            <node133331>407</node133331>
            <node133332>Full-time</node133332>
            <node133333>903002</node133333>
            <node133334>915001</node133334>
          </node13333>
        </node1333>
        <node1333>
          <node13331>2</node13331>
          <node13332>Branch 2</node13332>
          <node13333>
            <node133331>407</node133331>
            <node133332>Full-time</node133332>
            <node133333>903002</node133333>
            <node133334>915001</node133334>
          </node13333>
        </node1333>
      </node133>
      <node133>
        <node1331>26</node1331>
        <node1332>Department 2</node1332>
        <node1333>
          <node13332></node13332>
          <node13333>
            <node133331>416</node133331>
            <node133332>Full-time</node133332>
            <node133333>903001</node133333>
            <node133334>915001</node133334>
          </node13333>
        </node1333>
      </node133>
    </node13>
    <node13>
      <node131>13</node131>
      <node132>School 2</node132>
      <node133>
        <node1331>3</node1331>
        <node1332>Department 1</node1332>
        <node1333>
          <node13332></node13332>
          <node13333>
            <node133331>517</node133331>
            <node133332>Full-time</node133332>
            <node133333>903001</node133333>
            <node133334>915001</node133334>
          </node13333>
        </node1333>
      </node133>
      <node133>
        <node1331>34</node1331>
        <node1332>Department 2</node1332>
        <node1333>
          <node13332></node13332>
          <node13333>
            <node133331>830</node133331>
            <node133332></node133332>
            <node133333>903002</node133333>
            <node133334>915001</node133334>
          </node13333>
        </node1333>
      </node133>
      <node133>
        <node1331>35</node1331>
        <node1332>Department 3</node1332>
        <node1333>
          <node13332></node13332>
          <node13333>
            <node133331>831</node133331>
            <node133332></node133332>
            <node133333>903002</node133333>
            <node133334>915001</node133334>
          </node13333>
        </node1333>
      </node133>
      <node133>
        <node1331>36</node1331>
        <node1332>Department 4</node1332>
        <node1333>
          <node13332></node13332>
          <node13333>
            <node133331>832</node133331>
            <node133332></node133332>
            <node133333>903002</node133333>
            <node133334>915001</node133334>
          </node13333>
        </node1333>
      </node133>
    </node13>
  </node1>
</root>

Well, I can get data using XDocument like that for first nodes. But I could not read them into arrays.

var OrganizationCode= XDocument.Parse(serviceXML) //gets 50002
            .Descendants("root")
            .Descendants("node1")
            .Descendants("node11")
            .Select(x => x.Value)
            .FirstOrDefault();

The answer would be a nested foreach loops but I was not able to realize it.

This should give you all node11 values. It is assuming that you want ALL node11 values

var OrganizationCodes = XDocument.Parse(serviceXML)
        .Descendants("node11")
        .Select(x => x.Value);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM