Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/47: Рейтинг темы: голосов - 47, средняя оценка - 4.87
2 / 2 / 0
Регистрация: 01.02.2019
Сообщений: 37

Не работает запрос linq к xml

08.02.2019, 14:36. Показов 9156. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь распарсить приведенный ниже XML документ. Код не работает, но, если я редактирую XML(удаляю самый первый родительский тег: Orders xmlns="http://***" xmlns:xs="***" xmlns:xsi="***" и соответственно убираю этот тег в цикле), то все работает. Почему не получается работать с этим первым тегом? Пожалуйста поясните))) всем спасибо)

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
internal static void ParseXml(string path)
        {
 
            XDocument xdoc = XDocument.Load(path);
 
            foreach (XElement OrderStringElement in xdoc.Element("Orders").Element("Order").Element("OrderStrings").Elements("OrderString"))
            {
                XElement number = OrderStringElement.Element("Number");
                XElement productionID = OrderStringElement.Element("ProductionID");
                XElement barCode = OrderStringElement.Element("BarCode");
                XElement count = OrderStringElement.Element("Count");
                XElement price = OrderStringElement.Element("Price");
                XElement sum = OrderStringElement.Element("Sum");
 
 
                Console.WriteLine("number: {0}", number.Value);
                Console.WriteLine("productionID: {0}", productionID.Value);
                Console.WriteLine("barCode: {0}", barCode.Value);
                Console.WriteLine("count: {0}", count.Value);
                Console.WriteLine("price: {0}", price.Value);
                Console.WriteLine("sum: {0}", sum.Value);
 
                Console.WriteLine();
            }
        }
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<Orders xmlns="http://***" xmlns:xs="***" xmlns:xsi="***">
    <Order>
        <Number>123</Number>
        <Date>2019-02-06T09:57:48</Date>
        <SenderID>010</SenderID>
        <SendDate>0001-01-01T00:00:00</SendDate>
        <OrderStrings>
            <OrderString>
                <Number>1</Number>
                <ProductionID>001</ProductionID>
                <BarCode>448412312363</BarCode>
                <Count>20</Count>
                <Price>26.39</Price>
                <Sum>527.8</Sum>
            </OrderString>
            <OrderString>
                <Number>2</Number>
                <ProductionID>002</ProductionID>
                <BarCode>44841231237</BarCode>
                <Count>20</Count>
                <Price>37.94</Price>
                <Sum>758.8</Sum>
            </OrderString>
            <OrderString>
                <Number>3</Number>
                <ProductionID>003</ProductionID>
                <BarCode>44841231238</BarCode>
                <Count>20</Count>
                <Price>37.94</Price>
                <Sum>758.8</Sum>
            </OrderString>
            <OrderString>
                <Number>4</Number>
                <ProductionID>004</ProductionID>
                <BarCode>448412312311</BarCode>
                <Count>20</Count>
                <Price>33.81</Price>
                <Sum>676.2</Sum>
            </OrderString>
            <OrderString>
                <Number>5</Number>
                <ProductionID>004</ProductionID>
                <BarCode>448412312362156</BarCode>
                <Count>20</Count>
                <Price>34.56</Price>
                <Sum>691.2</Sum>
            </OrderString>
        </OrderStrings>
    </Order>
</Orders>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.02.2019, 14:36
Ответы с готовыми решениями:

LINQ XML составить запрос
Здраствуйте! Мне необходимо составить запрос выборки определённых элементов из XML файла с помощью LINQ. Запрос должен выбирать из 2-х баз...

Не работает linq to xml запрос
Здравствуйте. У меня есть вот такой xml &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; -&lt;export...

Как сделать linq запрос: преобразовать XML в объект
Здравствуйте. Парсю xml с помощью linq чтобы сразу преобразовывать их в объекты Есть такая Xml ?xml version=&quot;1.0&quot;...

4
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
08.02.2019, 14:40
Лучший ответ Сообщение было отмечено Kargaltsev как решение

Решение

Kargaltsev, потому что в корневом элементе определено дефолтное пространство имен, к которому относятся все дочерние элементы.
Это значит, что вам надо добавлять это пространство ко всем элементам при поиске.
Как вариант, можете попробовать удалить атрибут xmlns.
0
2 / 2 / 0
Регистрация: 01.02.2019
Сообщений: 37
08.02.2019, 14:44  [ТС]
Спасибо большое за ответ)
Можете подсказать еще, как с помощью linq удалить этот атрибут xmlns?
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
08.02.2019, 14:55
Лучший ответ Сообщение было отмечено Элд Хасп как решение

Решение

Цитата Сообщение от Kargaltsev Посмотреть сообщение
как с помощью linq удалить этот атрибут xmlns?
Linq — это инструмент для запросов, а не изменений
Да и в принципе лучше не менять исходные данные, а правильно указывать нужные пространства:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
internal static void ParseXml(string path)
{
    XDocument xdoc = XDocument.Load(path);
    var ns = new XmlNamespaceManager(new NameTable());
    ns.AddNamespace("n", "http://***");
 
    foreach (XElement OrderStringElement in xdoc.XPathSelectElements("/n:Orders/n:Order/n:OrderStrings/n:OrderString", ns))
    {
        var n = OrderStringElement.GetDefaultNamespace();
        XElement number = OrderStringElement.Element(n + "Number");
        XElement productionID = OrderStringElement.Element(n + "ProductionID");
        XElement barCode = OrderStringElement.Element(n + "BarCode");
        XElement count = OrderStringElement.Element(n + "Count");
        XElement price = OrderStringElement.Element(n + "Price");
        XElement sum = OrderStringElement.Element(n + "Sum");
 
 
        Console.WriteLine("number: {0}", number.Value);
        Console.WriteLine("productionID: {0}", productionID.Value);
        Console.WriteLine("barCode: {0}", barCode.Value);
        Console.WriteLine("count: {0}", count.Value);
        Console.WriteLine("price: {0}", price.Value);
        Console.WriteLine("sum: {0}", sum.Value);
 
        Console.WriteLine();
    }
}
Пространства:
C#
1
2
3
using System.Xml;
using System.Xml.Linq;
using System.Xml.XPath;
1
2 / 2 / 0
Регистрация: 01.02.2019
Сообщений: 37
08.02.2019, 15:03  [ТС]
Работает) спасибо Вам огромное, очень помогли )))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.02.2019, 15:03
Помогаю со студенческими работами здесь

Не получается LINQ to XML запрос к файлу, содержащему атрибут с двоеточиями
Один namespace уже определил: var ns = doc.Root.GetDefaultNamespace(); спускаюсь по XML, дохожу до узла, содержащего...

Как правильно составить запрос LINQ to XML: получение объектных моделей
Добрый день.Помогите,пожалуйста с запросом.Имеется xml файл с узлами блюд и ингредиентов: &lt;dishes&gt; &lt;dish...

Linq to Xml запрос, где обьект имеет List обьектов другого класса
есть классы public class Worker { public List&lt;EducationDuringWorking&gt; EducationsDuringWorking { get; set; } //... } ...

Linq to xml - не работает, коллекция все время пустая
Не могу понять, что не правильно: XElement xdoc = XElement.Load(&quot;http://www.onliner.by/feed&quot;); IEnumerable&lt;XElement&gt;...

Почему не работает LINQ запрос?
Подчеркивает APIName в where, не могу понять почему. CS1061 'IAPIName&quot; не содержит определения для &quot;APIName&quot; и не удалось найти...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru