Требование
Я хочу прочитать дерево XML, заполнить мои объекты встреченными атрибутами и после каждого запуска метода (вставить его в мою базу данных). Количество родителей не указано, также не указан порядок, это может быть, адрес-смерть-смерть-адрес-адрес, например
Входной файл
Обзор:
<Root>
<Element>
<Element2>
<Parent>
<Child>
<Grandchild>
<Grandchild>
</Child>
</Parent>
</Element2>
</Element1>
</Root>
Полный пример:
<?xml version="1.0" encoding="utf-8" ?>
<Root>
<Element1>
<Element2>
<Parent>
<Child>
<Grandchild>
<number>01</number>
<name>Person</name>
<Rows>
<Row>
<number>0110</number>
<name>ID</name>
<value>123456789</value>
</Row>
</Rows>
</Grandchild>
<Grandchild>
<number>08</number>
<name>Address</name>
<Rows>
<Row>
<number>1110</number>
<name>street</name>
<value>first aveneu</value>
</Row>
<Row>
<number>1120</number>
<name>streetnumber</name>
<value>345</value>
</Row>
<Row>
<number>1130</number>
<name>zip</name>
<value>2938PS</value>
</Row>
<Row>
<number>1160</number>
<name>country</name>
<value>Germany</value>
</Row>
</Rows>
</Grandchild>
</Child>
</Parent>
<Parent>
<Child>
<Grandchild>
<number>01</number>
<name>Person</name>
<Rows>
<Row>
<number>0110</number>
<name>ID</name>
<value>987654321</value>
</Row>
</Rows>
</Grandchild>
<Grandchild>
<number>06</number>
<name>Death</name>
<Rows>
<Row>
<number>0810</number>
<name>date</name>
<value>2012-01-03</value>
</Row>
<Row>
<number>0820</number>
<name>placeOfDeath</name>
<value>attic</value>
</Row>
<Row>
<number>0830</number>
<name>funeral</name>
<value>burrial</value>
</Row>
</Rows>
</Grandchild>
</Child>
</Parent>
</Element2>
</Element1>
</Root>
Желаемый результат
После встречи с родителем определите тип внука (номер 6 - это смерть, номер 8 - это адрес). У каждого родителя ВСЕГДА есть внук № 1 «Персона», вторым внуком является либо смерть, либо адрес.
чтение первого родителя
Person person = new Person();
person.ID = value; <--- filled with 123456789
person.street = value; <--- filled with first aveneu
person.streetnumber = value; <--- filled with 345
person.zip = value; <--- filled with 2938PS
person.country = value; <--- filled with germany
person.DoMethod(); // inserts the value in db
Продолжить чтение следующего родителя.
Person person = new Person();
person.ID = value; <--- filled with 987654321
person.date = value; <--- filled with 2012-01-03
person.placeOfDeath = value; <--- filled with attic
person.funeral = value; <--- filled with burrial
person.DoMethod(); // insert the values in db
Продолжайте читать, пока родители не найдены
РЕДАКТИРОВАТЬ: как нацелить элемент имени второго внука для каждого ребенка? Как адрес или смерть
код / Credit
Я не получил ничего, кроме этого, с помощью Дэниела Хилгарта: Linq to XML (C #) анализирует дерево XML без атрибутов / идентификатора объекта
Дерево XML изменилось, и я действительно застрял ... тем временем я пытаюсь опубликовать новый рабочий код ...