Я работал с определенным XML, где не было избыточностей
<person>
<eye>
<eye_info>
<eye_color>
blue
</eye_color>
</eye_info>
</eye>
<hair>
<hair_info>
<hair_color>
blue
</hair_color>
</hair_info>
</hair>
</person>
Как вы можете видеть, под-тег eye-color в его названии ссылается на eye, поэтому избегать избыточности не было необходимости, я мог получить цвет eye в одной строке после загрузки XML в набор данных:
dataset.ReadXml(path);
value = dataset.Tables("eye_info").Rows(0)("eye_color");
Я понимаю, что это не самый умный способ сделать это, и эта ситуация, которая у меня сейчас возникла, не была непредвиденной.
Теперь, допустим, я должен прочитать XML-файлы в следующем формате:
<person>
<eye>
<info>
<color>
blue
</color>
</info>
</eye>
<hair>
<info>
<color>
blue
</color>
</info>
</hair>
</person>
Итак, если я попытаюсь назвать это так:
dataset.ReadXml(path);
value = dataset.Tables("info").Rows(0)("color");
Там будет избыточность, потому что я мог пойти только на один уровень выше, чтобы идентифицировать одно поле в XML с моим предыдущим методом, а «двусмысленность» на три уровня выше.
Существует ли практический способ безошибочно достичь одного поля с учетом всех вышеперечисленных (или хотя бы нескольких) полей?
- [EDIT] -
Я задал еще один вопрос, спрашивая, как я могу получить определенный узел с linq, проверить его .