Разбор XML на основе значения - PullRequest
0 голосов
/ 02 августа 2011

Привет, мой xml такой

<?xml version="1.0" encoding="utf-8" ?><people>
<person>
    <key>title</key>
    <details>Kate</details>
    <contact>Smith</contact>
    <age>27</age>
    <key>childnodes</key>
 <person>
     <key>All</key>
     <details>Details</details>
     <contact>900033</contact>
      <details>Adress</details>
      <contact>housenumber</contact>
  </person>
</person>
<person>
    <key>title</key>
    <contact>Manu</contact>
    <age>30</age>
    <key>childnodes</key>
 <person>
     <key>subnode</key>
     <details>Details</details>
     <contact>Premraj</contact>
      <details>Gandhinagar</details>
      <contact>888444</contact>
  </person>
</person>
<person>
    <details>Ann</details>
    <contact>Peterson</contact>
    <age>27</age>
</person>
</people>

Я хочу проанализировать xml двумя способами: если ключ содержит «childnodes», то есть (« childnodes »), затем добавить данные в список или список, и если нет «childnodes» добавление значений в listbox1 или list1.Все дело в том, что мне нужно проверить ключ узла, если он содержит детей. Если вы знаете решение, пожалуйста, помогите мне

1 Ответ

0 голосов
/ 02 августа 2011

Прежде всего, у вас неверный XML. Вам не хватает </contact> закрывающего тега, а также </people>. Кроме того, структура ужасна, учитывая то, как вы обрабатываете записи chid. Вместо этого должно быть так:

<people>
  <person>
    <name>title</name>
    <address>Kate</address>
    <phone>Smith</phone>
    <age>27</age>
    <children>
      <person>
        <name>sub</name>
        <address>Details</address>
        <phone>900033</phone>
      </person>
    </children>
  </person>
  <person>
    <name>title</name>
    <phone>Manu</phone>
    <age>30</age>
    <children>
      <person>
        <name>AnotherName</name>
        <address>Details</address>
        <phone>900033</phone>
      </person>
    </children>
  </person>
</people>

Во-вторых, вы можете сериализовать свой класс и затем выполнить соответствующие привязки. Например, общая структура сериализации для вашего случая будет выглядеть следующим образом:

[XmlRoot("people")]
public class People
{
    [XmlElement("person")]
    public List<Person> RegisteredPeople { get; set; } 
}

public class Person
{
    [XmlElement("name")]
    public string Name { get; set; }
    [XmlElement("address")]
    public string Address { get; set; }
    [XmlElement("phone")]
    public string Phone { get; set; }

    [XmlArray("children")]
    [XmlArrayItem("person")]
    public List<Person> Children { get; set; }
}

Десериализатор должен действовать следующим образом:

XmlSerializer serializer = new XmlSerializer(typeof(People));
StringReader reader = new StringReader(YOUR_XML);
People p = (People)serializer.Deserialize(reader);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...