2011-08-02 24 views
0

こんにちは私のxmlは次のようである。この解析用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> 

私は鍵が(」<キー>のchildNodes <の鍵である「のchildNodes」が含まれている場合である2つの方法でXMLを解析したいです> ')リストボックスまたはリストにデータを追加し、listbox1またはlist1に値を追加する「childnodes」がない場合は、ノードキーをチェックする必要があります。子供が含まれているかどうかチェックする必要があります。助けてください

答えて

0

最初に、あなたは無効なXMLを持っています。 </people>と同様に、</contact>終了タグがありません。また、構造は、あなたが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);