Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Legenda374
2 / 2 / 0
Регистрация: 18.09.2016
Сообщений: 39
1

Парсинг XML

15.01.2018, 20:47. Просмотров 852. Ответов 6

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
<SpellResult>
<error code="1" pos="0" row="0" col="0" len="6">
<word>1</word>
<s>1.1</s>
<s>1.2</s>
</error>
<error code="1" pos="7" row="0" col="7" len="6">
<word>2</word>
<s>2.1</s>
<s>2.2</s>
<s>2.2</s>
</error>
</SpellResult>
Доброго времени суток, подскажите пожалуйста как распарсить данный xml для того что бы получить массив строк из элемента word, то есть в данном варианте [1, 2]

З.Ы. Вот
C#
1
var a = response.Root.Elements("error").Elements("word");
Как теперь это в массив запихнуть
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.01.2018, 20:47
Ответы с готовыми решениями:

Парсинг XML
Подскажите пожалуйста на подобную тему. Имеется XML-строка &lt;?xml...

Парсинг XML
Подскажите получаю ответ от сервера в формате XML. Примерно такого содержания &quot;...

Парсинг Xml
Добрый день. Помогите распарсить Xml документ. Это справочник ОКПД. Весь...

Парсинг XML с двоеточием
Пытаюсь парсить XML RSS вида: &lt;title&gt;...&lt;/title&gt;...

Парсинг xml страницы
Всем доброго времени. Есть xml страница откуда нужно получить ноду из тега...

6
ViterAlex
6462 / 3632 / 1484
Регистрация: 11.02.2013
Сообщений: 7,990
Завершенные тесты: 3
15.01.2018, 21:41 2
Лучший ответ Сообщение было отмечено Legenda374 как решение

Решение

C#
1
var values = response.Element("SpellResult").Elements("error").Elements("word").Select(el => el.Value).ToArray();
Добавлено через 3 минуты
Или использовать XPath:
C#
1
var values = response.XPathSelectElements("//word").Select(el => el.Value).ToArray();
1
Legenda374
2 / 2 / 0
Регистрация: 18.09.2016
Сообщений: 39
15.01.2018, 21:53  [ТС] 3
Спасибо большое)

Добавлено через 10 минут
А каким образом еще можно получить массив из
XML
1
2
3
<s>2.1</s>
<s>2.2</s>
<s>2.2</s>
обращаясь к
XML
1
<word>2</word>
0
ViterAlex
6462 / 3632 / 1484
Регистрация: 11.02.2013
Сообщений: 7,990
Завершенные тесты: 3
15.01.2018, 22:23 4
Немного сложнее, но не очень:
C#
1
2
3
4
5
6
7
8
9
10
11
12
var values = response.XPathSelectElements("//word")
    .Select(el => new
    {
        Word = $"\"{el.Value}\"",
        Values = el.XPathSelectElements("following-sibling::s")
                    .Select(s => $"\"{s.Value}\"").ToArray()
    })
    .ToArray();
foreach (var item in values)
{
    Console.WriteLine($"Word = {item.Word}; s = [{string.Join(", ", item.Values)}]");
}
Результат:
Код
Word = " 1 "; s = [" 1.1 ", " 1.2 "]
Word = " 2 "; s = [" 2.1 ", " 2.2 ", " 2.2 "]
0
Legenda374
2 / 2 / 0
Регистрация: 18.09.2016
Сообщений: 39
15.01.2018, 22:35  [ТС] 5
ViterAlex, Спасибо но это не много не подойдет, можно возвращать не все, а только тот Word, который я подставлю, есть некий XPathSelectElements в котором я указываю Value world в данном случае 2, и получаю var с 3 переменными
0
ViterAlex
6462 / 3632 / 1484
Регистрация: 11.02.2013
Сообщений: 7,990
Завершенные тесты: 3
15.01.2018, 22:48 6
Legenda374, ну почитай немного про XPath, там ничего военного нет.
Цитата Сообщение от Legenda374 Посмотреть сообщение
тот Word, который я подставлю,
Например, так. Будут выбраны только узлы, где word = 2
C#
1
2
var values = doc.XPathSelectElements("//word[text()=2]")
    .Select(el => el.XPathSelectElements("following-sibling::s").Select(s => $"\"{s.Value}\"").ToArray()).ToArray();
0
Legenda374
2 / 2 / 0
Регистрация: 18.09.2016
Сообщений: 39
15.01.2018, 23:03  [ТС] 7
ViterAlex, Не работает, пустой массив
0
15.01.2018, 23:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2018, 23:03

Парсинг xml документа
Имеется документ типа &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; standalone=&quot;yes&quot;?&gt;...

JSON и XML парсинг
Всем привет, снова решил ромучить форучан своими сложными вопросами, на которые...

Парсинг XML файла
Собственно есть XML файл такого вида. Надо получить все параметры. К сожалению...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru