XML выберите узел в списке Fail - PullRequest
0 голосов
/ 11 февраля 2019

Нет проблем при загрузке простого XML-файла в LIST.НО, когда я создаю второй элемент, он загружается, но загружает все в одну строку.

Я даже пытался использовать xmlDoc.Descendants ("яблоко") с теми же результатами.

Работает.

<?xml version="1.0" encoding="utf-8"?>
<green_apple>
    <Location>CA</Location>
    <Price>.52</Price>
</green_apple>

XDocument xmlDoc = XDocument.Load("apple.xml");
List<string> list = xmlDoc.Root.Elements()
                    .Select(element => element.Value.Trim())
                    .ToList();

List Result:
list[0] = CA
List[1] = .52

Не работает.

<?xml version="1.0" encoding="utf-8"?>
<apple>
    <green_apple>
        <Location>CA</Location>
        <Price>.52</Price>
    </green_apple>
    <red_apple>
        <Location>FL</Location>
        <Price>.71</Price>
    </red_apple>
</apple>

XDocument xmlDoc = XDocument.Load("apple.xml");
            List<string> list = xmlDoc.Root.Elements("green_apple")   <<specify specify element.
                .Select(element => element.Value.Trim())
                .ToList();

List Result:
list[0] = CA.52   <<Here's the problem, they should be in their own list element.

1 Ответ

0 голосов
/ 11 февраля 2019

Elements возвращает дочерние элементы текущего узла, которые в вашем случае являются green_apple элементами.Поэтому вам нужно получить green_apple дочерние узлы, вызвав Elements() для green_apple элемента.

Используйте это:

List<string> list = xmlDoc.Root.Elements("green_apple").Elements()
                .Select(element => element.Value.Trim())
                .ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...