Форум программистов, компьютерный форум, киберфорум
LINQ
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/27: Рейтинг темы: голосов - 27, средняя оценка - 4.63
0 / 0 / 2
Регистрация: 13.12.2010
Сообщений: 60

Linq to xml - выбор нескольких элементов

06.03.2012, 11:50. Показов 5018. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Подскажите пожалуйста, как сделать выборку нескольких элементов в xml, с помощью linq?
Следующий код не правильный, но примерно как я пытаюсь сделать видно:
C#
1
2
3
4
5
6
7
XElement root = XElement.Load("task_xml.xml");
            IEnumerable<XElement> user =
                from el in root.Elements("user")
                where (string)el.Element("LastName") && (string)el.Element("FirstName")
                select el;
            foreach (XElement el in user)
                Console.WriteLine(el.Name);
Есть небольшой работающий код, сделанный с помощью pugi на с++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int i = 0;
    pugi::xml_document doc;
    doc.load_file("task_xml.xml");
    pugi::xml_node root = doc.child("root");
    if(!root) { std::cout << "Owibka noda" << std::endl; }
    for(pugi::xml_node user = root.child("users").child("user"); user; user = user.next_sibling("user"))
    {
        i++;
        std::cout << "LastName user - " << user.child("LastName").first_child().value() << std::endl;
        std::cout << "FirstName user - " << user.child("FirstName").first_child().value() << std::endl;
        std::cout << "MiddleName user - " << user.child("MiddleName").first_child().value() << std::endl;
    }
    std::cout << "Users - " << i << std::endl;
подскажите как реализовать это в c#?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.03.2012, 11:50
Ответы с готовыми решениями:

LINQ to XML или XPath to XML (выбор одного элемента)
Прошу помощи в LINQ или XPath запросе к XML Вот XML: &lt;manifest...

Выборка элементов в LINQ to XML из [backup policy]
Вводные: 1-у меня есть любая тестовая групповая политика, которую я через backup выгружаю и получаю xml файл, из которого я могу...

LINQ 2 XML Получение атрибутов дочерних элементов
имеется XML файл вида &lt;Root&gt; &lt;Elements Name=&quot;NAME&quot;&gt; &lt;Element Atr1=&quot;atr1&quot; Atr2=&quot;atr2&quot; /&gt; &lt;Element...

7
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
06.03.2012, 12:40
Godod, пример XML и что нужно сделать выложите.
0
 Аватар для aregaz
2 / 2 / 0
Регистрация: 19.02.2010
Сообщений: 42
06.03.2012, 15:31
Эм, смутила вот эта строка:
Цитата Сообщение от Godod Посмотреть сообщение
where (string)el.Element("LastName") && (string)el.Element("FirstName")
Получается, "где строка1 и строка2" вместо "где условие1 и условие2".
0
0 / 0 / 2
Регистрация: 13.12.2010
Сообщений: 60
06.03.2012, 15:54  [ТС]
Пример XML:
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
<root>
    <users>
        <user id="1001">
            <Username>i31test10\user1</Username>
            <LastName>Last Name</LastName>
            <FirstName>First Name</FirstName>
            <MiddleName>Middle Name</MiddleName>
            <Email>2@2.2</Email>
            <Gender>1</Gender>
            <BirthDate></BirthDate>
            <WorkPhone></WorkPhone>
            <Title>Test title-2</Title>
            <DepartmentID>4</DepartmentID>
            <Grade></Grade>
        </user>
        <user id="1002">
            <Username>i31test10\user2</Username>
            <LastName>Last Name 2</LastName>
            <FirstName>First Name 2</FirstName>
            <MiddleName>Middle Name_</MiddleName>
            <Email>0@0.0</Email>
            <Gender>1</Gender>
            <BirthDate>1999-05-05</BirthDate>
            <WorkPhone>123</WorkPhone>
            <Title>Test title-3</Title>
            <DepartmentID>3</DepartmentID>
            <Grade>1</Grade>
        </user>
</users>
</root>
Вообще нужно "разобрать дерево и записать произвольные результаты в лог файл (Например: прочитано 5 пользователей: <перечень ФИО пользователей>)." Мне хотя бы вывести в консоль. А точнее понять как это делается.

Добавлено через 38 секунд
aregaz, я сразу написал, что код не правильный. Я просто не знаю, как сделать так, чтобы выводилось конкретные данные.
0
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
06.03.2012, 19:33
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
using System.Linq;
using System.Xml.Linq;
 
class Program
{
    static void Main(string[] args)
    {
        const string fileName = @"D:\XMLFile1.xml";
        XDocument xDoc = XDocument.Load(fileName);
        var query = from user in xDoc.Element("root").Element("users").Elements("user")
                    select new
                    {
                        FirstName = user.Element("FirstName").Value,
                        LastName = user.Element("LastName").Value
                    };
        foreach (var user in query)
            Console.WriteLine("{0} {1}", user.FirstName, user.LastName);
        Console.ReadKey(true);
    }
}
1
0 / 0 / 2
Регистрация: 13.12.2010
Сообщений: 60
06.03.2012, 23:44  [ТС]
небольшой вопрос. Зачем перед путем ставится @?
0
Амурчанка
 Аватар для tantemka
136 / 136 / 44
Регистрация: 07.11.2011
Сообщений: 279
07.03.2012, 14:47
Если ставится @, то не учитываются escape-символы.
C#
1
2
@"D:\XMLFile1.xml" // с @
"D:\\XMLFile1.xml" // без @
строки
1
0 / 0 / 1
Регистрация: 22.08.2013
Сообщений: 70
30.12.2013, 10:54
Доброго времени суток из xml файла читаю то что находится внутри тега title но мне нужно прочитать ещё и code находящийся внутри тега report подскажите пожалуйста как это сделать.

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="utf-8" ?> 
- <report code="45486548236" form="125" shifr="text" year="2013" period="1" version="20-02-2013">
- <title>
  <item name="okpo" value="444585885" />  
  <item name="name" value="Имя" /> 
  </title>
- <sections>
- <section code="1">
  </row>
  </section>
  <section code="225" /> 
  <section code="647887" /> 
  </sections>
  </report>

title читаю так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
XDocument xDoc = XDocument.Load(fileName);
            var query = from title in xDoc.Element("report").Elements("title").Elements("item")
 
                        select new
                        {
                            report = title.Attribute("code").Value, //Вот тут ошибка не пойму как прочитать code
                            name = title.Attribute("name").Value,
                            value = title.Attribute("value").Value
                        };
 
            foreach (var title in query)
                Console.WriteLine("{0} {1}", title.name, title.value);
            Console.ReadKey();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.12.2013, 10:54
Помогаю со студенческими работами здесь

Выбор CMS для XML импорта с нескольких сайтов
Подскажите какую выбрать CMS для XML импорта каталогов с нескольких партнерских сайтов. Скажем так наиболее приспособленную для данных...

Выбор дублирующихся элементов в коллекции. LINQ
var newduplicateParts = allItems.GroupBy(x =&gt; x.Designation) .Where(g =&gt; g.Count() &gt; 1) .Select(y =&gt; y.Key)...

Подсчитать количтво нодов в XML при помощи LINQ to XML
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;Root&gt; &lt;host&gt; 192.168.1.1 &lt;/host&gt; &lt;host&gt; 192.168.1.3 &lt;/host&gt; &lt;/Root&gt; как...

Удаление нескольких элементов из XML
Есть XML &lt;tr class=&quot;nom&quot;&gt; &lt;td colspan=&quot;2&quot; &gt;Пары&lt;/td&gt; &lt;td width=&quot;80&quot;&gt;1-я&lt;/td&gt; &lt;/tr&gt; &lt;tr class=&quot;tim&quot;&gt; ...

Как добавить данные в xml-файл, используя пространство имен System.Xml.Linq
Допустим, есть файл xml, я его взял из этого треда: https://www.cyberforum.ru/vb-net/thread335207.html &lt;?xml version=&quot;1.0&quot;...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru