С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/50: Рейтинг темы: голосов - 50, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 15.08.2011
Сообщений: 17

XML Поиск элемента по атрибуту и запись в новый файл

15.12.2012, 22:19. Показов 10190. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Пишу программу которая будет в xml искать элемент по значению атрибута и результат будет заносить заносить в новый файл.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
     ArrayList orders = new ArrayList();
            orders.Add("100001405");
            orders.Add("100001406");
            // Load the document and set the root element.
            XmlDocument doc = new XmlDocument();
            doc.Load("lex1.xml");
            XmlNode root = doc.DocumentElement;
            string FilePath = @"123.xml";
            // Add the namespace.
            XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
            for (int i = 0; i < orders.Count; i++)
            {
                XmlNodeList nodeList = root.SelectNodes(".//item_template[@id=\""+ orders[i] + "\"]", nsmgr);
                Console.WriteLine(orders[i]);
            }
            doc.Save(FilePath);
            // Display the updated document.
            Console.ReadLine();
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
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<item_templates>
        <item_template id="100001405" name="world cash Gulare's Sword" level="60" mask="7240" category="SWORD" weapon_type="SWORD_1H" max_stack_count="1" item_type="NORMAL" quality="EPIC" price="3665400" race="PC_ALL" option_slot_bonus="0" restrict="60,60,60,60,60,60,60,60,60,60,60,60" restrict_max="63,63,63,63,63,63,63,63,63,63,63,63" desc="1604073" attack_gap="0.0" attack_type="PHYSICAL" slot="3" equipment_type="WEAPON">
        <modifiers>
            <add name="MAXHP" value="508" bonus="true"/>
            <add name="PHYSICAL_ACCURACY" value="142" bonus="true"/>
            <add name="PHYSICAL_ATTACK" value="35" bonus="true"/>
            <rate name="ATTACK_SPEED" value="-19" bonus="true"/>
        </modifiers>
        <weapon_stats hit_count="2" attack_range="4000" magical_accuracy="331" parry="1014" physical_accuracy="976" physical_critical="50" attack_speed="1400" max_damage="225" min_damage="183"/>
    </item_template>
        <item_template id="100001406" name="world cash Gulare's Sword" level="60" mask="7240" category="SWORD" weapon_type="SWORD_1H" max_stack_count="1" item_type="NORMAL" quality="EPIC" price="3665400" race="PC_ALL" option_slot_bonus="0" restrict="60,60,60,60,60,60,60,60,60,60,60,60" restrict_max="63,63,63,63,63,63,63,63,63,63,63,63" desc="1604073" attack_gap="0.0" attack_type="PHYSICAL" slot="3" equipment_type="WEAPON">
        <modifiers>
            <add name="MAXHP" value="508" bonus="true"/>
            <add name="PHYSICAL_ACCURACY" value="142" bonus="true"/>
            <add name="PHYSICAL_ATTACK" value="35" bonus="true"/>
            <rate name="ATTACK_SPEED" value="-19" bonus="true"/>
        </modifiers>
        <weapon_stats hit_count="2" attack_range="4000" magical_accuracy="331" parry="1014" physical_accuracy="976" physical_critical="50" attack_speed="1400" max_damage="225" min_damage="183"/>
    </item_template>
        <item_template id="100001407" name="world cash Gulare's Sword" level="60" mask="7240" category="SWORD" weapon_type="SWORD_1H" max_stack_count="1" item_type="NORMAL" quality="EPIC" price="3665400" race="PC_ALL" option_slot_bonus="0" restrict="60,60,60,60,60,60,60,60,60,60,60,60" restrict_max="63,63,63,63,63,63,63,63,63,63,63,63" desc="1604073" attack_gap="0.0" attack_type="PHYSICAL" slot="3" equipment_type="WEAPON">
        <modifiers>
            <add name="MAXHP" value="508" bonus="true"/>
            <add name="PHYSICAL_ACCURACY" value="142" bonus="true"/>
            <add name="PHYSICAL_ATTACK" value="35" bonus="true"/>
            <rate name="ATTACK_SPEED" value="-19" bonus="true"/>
        </modifiers>
        <weapon_stats hit_count="2" attack_range="4000" magical_accuracy="331" parry="1014" physical_accuracy="976" physical_critical="50" attack_speed="1400" max_damage="225" min_damage="183"/>
    </item_template>
</item_templates>
Но у меня почему то в файл записываются все элементы заново а не элементы которые он должен был найти.
Помогите в чем проблема спасибо.

Добавлено через 5 часов 9 минут
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
            ArrayList orders = new ArrayList();
            orders.Add("100001405");     //id
            orders.Add("100001406");     //id
            XmlDocument doc = new XmlDocument();
            doc.Load("lex1.xml");
            XmlNode root = doc.DocumentElement;
            XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
            try
            {
                //ArrayList orders = new ArrayList() { 100001407 };
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < orders.Count; i++)
                {
                   
                    XDocument doc1 = XDocument.Load("123.xml");
                    string s = Convert.ToString(orders[i]);
                    Console.WriteLine(s);
                    var q = from node in doc1.Descendants("item_template") let attr = node.Attribute("id") where attr != null & attr.Value == s select node;                    
                    doc1.Save("123.xml");
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("The file could not be read:");
                Console.WriteLine(e.Message);
            }
            Console.ReadLine();
Пробовал так тоже не работает переписывает весь файл =(
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.12.2012, 22:19
Ответы с готовыми решениями:

Поиск по атрибуту тега XML
Здравствуйте, нужна ваша помощь. У меня есть сохраненный XML документ с такими вот элементами &lt;?xml version=&quot;1.0&quot;...

LINQ to XML - поиск по атрибуту
Здравствуйте хотелось бы попросить помощи в одном вопросе. Есть XML файл, записываю в него данные так: XDocument doc = new...

Поиск по числовому XML атрибуту
на msdn нашел пример поиск элемента по, атрибуту. XElement root = XElement.Load(&quot;PurchaseOrder.xml&quot;); IEnumerable&lt;XElement&gt;...

8
7 / 7 / 1
Регистрация: 02.05.2012
Сообщений: 26
16.12.2012, 03:05
C#
1
2
3
4
5
6
7
8
9
10
11
doc.Load("lex1.xml"); //тут вы загрузили ваш документ
XmlNode root = doc.DocumentElement;
string FilePath = @"123.xml";
// Add the namespace.
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
for (int i = 0; i < orders.Count; i++)
{
   XmlNodeList nodeList = root.SelectNodes(".//item_template[@id=\""+ orders[i] + "\"]", nsmgr);
   Console.WriteLine(orders[i]);
}
doc.Save(FilePath); //а здесь, не внеся в него никаких изменений, сохранили
Аналогично:

C#
1
2
3
4
5
XDocument doc1 = XDocument.Load("123.xml"); //открыли документ
string s = Convert.ToString(orders[i]);
Console.WriteLine(s);
var q = from node in doc1.Descendants("item_template") let attr = node.Attribute("id") where attr != null & attr.Value == s select node; //эту строку я не особо понимаю, т.к. с xml-парсингом не работал                 
doc1.Save("123.xml"); //ничего с ним не сделали и сохранили

Сохраняйте необходимые вам полученные при парсинге данные, а не открытый неизменный документ
0
0 / 0 / 0
Регистрация: 15.08.2011
Сообщений: 17
16.12.2012, 15:37  [ТС]
Хм. А как сохранить эти данные вот я не могу понять Уже 3 день сижу.... где ошибка.... как сделать...

Добавлено через 11 часов 54 минуты
Уважаемые помогите пожалуйста как сделать чтоб работало как я хотел?!
0
7 / 7 / 1
Регистрация: 02.05.2012
Сообщений: 26
16.12.2012, 16:29
Что конкретно вы хотите вытащить из этого XML? Укажите строки/значения/что бы то ни было еще.
0
0 / 0 / 0
Регистрация: 15.08.2011
Сообщений: 17
16.12.2012, 17:13  [ТС]
Берет из массива значения и создает запрос для поиска в xml файле узла соответствующий критериям и копирует его полностью в новый файл.
XML
1
2
3
4
5
6
7
8
<item_template id="1">
<b>ТЕКСТ</b>
idc="2"/>
</item_template>
<item_template id="2">
<b>ТЕКСТ</b>
idc="3"/>
</item_template>
Ищем Элемент item_template с атрибутом "id" и значение "1" (Оно берется из ArrayList) => Нашли узел => скопировали в новый файл, Перешли к следующем значению из массива. На выходе должен получиться файл с узлами item_template и со всеми дочерними узлами которые были найдены в xml по заданным критериям.
0
7 / 7 / 1
Регистрация: 02.05.2012
Сообщений: 26
16.12.2012, 17:28
Не совсем понял, что именно вы хотите вытащить, посему пришлось делать двойную работу.
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
 
namespace ConsoleApplication1
{
    class Program
    {
        static string[] search_keys = { "100001405", "100001406" };
        static List<States> states;
 
        struct States
        {
            string name, value;
            bool bonus;
 
            public States(string name_t, string value_t, bool bonus_t)
            {
                name = name_t;
                value = value_t;
                bonus = bonus_t;
            }
 
            public string Name
            {
                get { return this.name; }
                set { name = value; }
            }
 
            public string Value
            {
                get { return this.value; }
                set { this.value = value; }
            }
 
            public bool Bonus
            {
                get { return bonus; }
                set { bonus = value; }
            }
        }
 
        static void GetInnerNodeXML()
        {            
            XmlDocument doc = new XmlDocument();
            doc.Load("D:\\xml.xml");
            XmlNode root_node = doc.DocumentElement;
            XmlNamespaceManager namespace_manager = new XmlNamespaceManager(doc.NameTable);
 
            foreach (string key in search_keys)
            {
                XmlNode node = root_node.SelectSingleNode(".//item_template[@id=\"" + key + "\"]", namespace_manager);
                Console.WriteLine("Inner node xml: " + node.InnerXml);
                Console.WriteLine();
            }
        }
 
        static void GetEveryState()
        {            
            XmlDocument doc = new XmlDocument();
            doc.Load("D:\\xml.xml");
            XmlNode root_node = doc.DocumentElement;
            XmlNamespaceManager namespace_manager = new XmlNamespaceManager(doc.NameTable);
 
            foreach (string key in search_keys)
            {
                Console.WriteLine("Getting attributes for search key_value " + key + " ...");
                Console.WriteLine();
                states = new List<States>();
 
                XmlNode parent_node = root_node.SelectSingleNode(".//item_template[@id=\"" + key + "\"]", namespace_manager);
                {
                    foreach (XmlNode child_node_level1 in parent_node.ChildNodes)
                    {
                        if (child_node_level1.Name == "modifiers")
                        {
                            foreach (XmlNode child_node_level2 in child_node_level1.ChildNodes)
                            {
                                states.Add(new States(child_node_level2.Attributes[0].Value, child_node_level2.Attributes[1].Value, bool.Parse(child_node_level2.Attributes[2].Value)));
                            }
                        }
                    }
                }
 
                for(int i = 0; i < states.Count; i++)
                {                    
                    Console.WriteLine("#" + i + " states");
                    Console.WriteLine("Attribute_name: " + states[i].Name);
                    Console.WriteLine("Attribute_value: " + states[i].Value);
                    Console.WriteLine("Is_active_bonus: " + states[i].Bonus.ToString());
                    Console.WriteLine();
                }
            }
        }
 
 
        static void Main(string[] args)
        {
            GetInnerNodeXML();
            Console.WriteLine();
            GetEveryState();
            Console.Read();
        }
    }
}
Метод GetInnerNodeXML() вытаскивает весь XML-текст между каждым узлом с именем "item_template" и выводит на консоль. Перепишите как хотите. Хотите - прикрепите к нему XML родительской ноды - никто вам не мешает. Я думаю, разберетесь. Далее вам останется только прикрепить текст к строке и записать в файл.

Метод GetEveryState() вытаскивает конкретные значения конкретных атрибутов нод. Хотите - возьмите массив states, опять же прикрепите значения к строке и запишите в файл. Если вам нужен был первый метод - все равно взгляните на второй, чтобы понять как проходить по структуре дерева XML и доставать то или иное значение.

P.S. мне хватило часа, чтобы с нуля разобраться
1
0 / 0 / 0
Регистрация: 15.08.2011
Сообщений: 17
16.12.2012, 17:59  [ТС]
Спасибо пойду перерабатывать. Вытащить нужно был весь узел с дочерними узлами со всеми элементами и атрибутами.

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
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<item_templates>
        <item_template id="100001405" name="world cash Gulare's Sword" level="60" mask="7240" category="SWORD" weapon_type="SWORD_1H" max_stack_count="1" item_type="NORMAL" quality="EPIC" price="3665400" race="PC_ALL" option_slot_bonus="0" restrict="60,60,60,60,60,60,60,60,60,60,60,60" restrict_max="63,63,63,63,63,63,63,63,63,63,63,63" desc="1604073" attack_gap="0.0" attack_type="PHYSICAL" slot="3" equipment_type="WEAPON">
        <modifiers>
            <add name="MAXHP" value="508" bonus="true"/>
            <add name="PHYSICAL_ACCURACY" value="142" bonus="true"/>
            <add name="PHYSICAL_ATTACK" value="35" bonus="true"/>
            <rate name="ATTACK_SPEED" value="-19" bonus="true"/>
        </modifiers>
        <weapon_stats hit_count="2" attack_range="4000" magical_accuracy="331" parry="1014" physical_accuracy="976" physical_critical="50" attack_speed="1400" max_damage="225" min_damage="183"/>
    </item_template>
        <item_template id="100001406" name="world cash Gulare's Sword" level="60" mask="7240" category="SWORD" weapon_type="SWORD_1H" max_stack_count="1" item_type="NORMAL" quality="EPIC" price="3665400" race="PC_ALL" option_slot_bonus="0" restrict="60,60,60,60,60,60,60,60,60,60,60,60" restrict_max="63,63,63,63,63,63,63,63,63,63,63,63" desc="1604073" attack_gap="0.0" attack_type="PHYSICAL" slot="3" equipment_type="WEAPON">
        <modifiers>
            <add name="MAXHP" value="508" bonus="true"/>
            <add name="PHYSICAL_ACCURACY" value="142" bonus="true"/>
            <add name="PHYSICAL_ATTACK" value="35" bonus="true"/>
            <rate name="ATTACK_SPEED" value="-19" bonus="true"/>
        </modifiers>
        <weapon_stats hit_count="2" attack_range="4000" magical_accuracy="331" parry="1014" physical_accuracy="976" physical_critical="50" attack_speed="1400" max_damage="225" min_damage="183"/>
    </item_template>
        <item_template id="100001407" name="world cash Gulare's Sword" level="60" mask="7240" category="SWORD" weapon_type="SWORD_1H" max_stack_count="1" item_type="NORMAL" quality="EPIC" price="3665400" race="PC_ALL" option_slot_bonus="0" restrict="60,60,60,60,60,60,60,60,60,60,60,60" restrict_max="63,63,63,63,63,63,63,63,63,63,63,63" desc="1604073" attack_gap="0.0" attack_type="PHYSICAL" slot="3" equipment_type="WEAPON">
        <modifiers>
            <add name="MAXHP" value="508" bonus="true"/>
            <add name="PHYSICAL_ACCURACY" value="142" bonus="true"/>
            <add name="PHYSICAL_ATTACK" value="35" bonus="true"/>
            <rate name="ATTACK_SPEED" value="-19" bonus="true"/>
        </modifiers>
        <weapon_stats hit_count="2" attack_range="4000" magical_accuracy="331" parry="1014" physical_accuracy="976" physical_critical="50" attack_speed="1400" max_damage="225" min_damage="183"/>
    </item_template>
</item_templates>
На выходе должно быть как то так.

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<item_templates>
        <item_template id="100001405" name="world cash Gulare's Sword" level="60" mask="7240" category="SWORD" weapon_type="SWORD_1H" max_stack_count="1" item_type="NORMAL" quality="EPIC" price="3665400" race="PC_ALL" option_slot_bonus="0" restrict="60,60,60,60,60,60,60,60,60,60,60,60" restrict_max="63,63,63,63,63,63,63,63,63,63,63,63" desc="1604073" attack_gap="0.0" attack_type="PHYSICAL" slot="3" equipment_type="WEAPON">
        <modifiers>
            <add name="MAXHP" value="508" bonus="true"/>
            <add name="PHYSICAL_ACCURACY" value="142" bonus="true"/>
            <add name="PHYSICAL_ATTACK" value="35" bonus="true"/>
            <rate name="ATTACK_SPEED" value="-19" bonus="true"/>
        </modifiers>
        <weapon_stats hit_count="2" attack_range="4000" magical_accuracy="331" parry="1014" physical_accuracy="976" physical_critical="50" attack_speed="1400" max_damage="225" min_damage="183"/>
    </item_template>
        <item_template id="100001406" name="world cash Gulare's Sword" level="60" mask="7240" category="SWORD" weapon_type="SWORD_1H" max_stack_count="1" item_type="NORMAL" quality="EPIC" price="3665400" race="PC_ALL" option_slot_bonus="0" restrict="60,60,60,60,60,60,60,60,60,60,60,60" restrict_max="63,63,63,63,63,63,63,63,63,63,63,63" desc="1604073" attack_gap="0.0" attack_type="PHYSICAL" slot="3" equipment_type="WEAPON">
        <modifiers>
            <add name="MAXHP" value="508" bonus="true"/>
            <add name="PHYSICAL_ACCURACY" value="142" bonus="true"/>
            <add name="PHYSICAL_ATTACK" value="35" bonus="true"/>
            <rate name="ATTACK_SPEED" value="-19" bonus="true"/>
        </modifiers>
        <weapon_stats hit_count="2" attack_range="4000" magical_accuracy="331" parry="1014" physical_accuracy="976" physical_critical="50" attack_speed="1400" max_damage="225" min_damage="183"/>
    </item_template>
.........
........
........
</item_templates>
0
7 / 7 / 1
Регистрация: 02.05.2012
Сообщений: 26
16.12.2012, 18:13
В таком случае ваша задача упрощается до:
C#
1
2
3
4
5
6
7
8
static void GetInnerNodeXML()
{            
    XmlDocument doc = new XmlDocument();
    doc.Load("D:\\xml.xml"); //тут путь к вашему файлу
    XmlNode root_node = doc.DocumentElement;
    XmlNode node = root_node.SelectSingleNode("//item_templates");
    File.WriteAllText("D:\\newxml.xml", node.OuterXml);          
}
P.S. Для "Спасибо" существует кнопочка

P.P.S: не забудьте включить System.IO в директивах using
1
0 / 0 / 0
Регистрация: 15.08.2011
Сообщений: 17
16.12.2012, 18:54  [ТС]
Спасибо выручили.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.12.2012, 18:54
Помогаю со студенческими работами здесь

XML. Поиск узла по известному атрибуту
Хочу вывести определенный Caption в зависимости от ID, как это сделать? Хотя бы в двух словах. &lt;?xml version=&quot;1.0&quot;...

Поиск узла по атрибуту с помощью LINQ to XML
Как найти узел по атрибуту и удалить? Как найти узел по атрибуту и изменить значения в дочерних елементах? через linq

Поиск элемента в массиве и запись информации в файл
9. Напишите программу, которая проверяет, есть ли в массиве элементы с таким же значением как и вводимое число с клавиатуры. ...

Получаю xml по url, как сохранить содержимое в новый xml файл, только чтобы структура не нарушилась?
Когда делаю так, структура нарушается WebRequest request =...

Запись XML-дерева сразу в xml-файл (парсер JAXP)
Народ!Программеры!Помогите человеку,плиз! Парсерю я xml-файл,через DOM-модель,использую JAXP.После модификации надо все дерево записать в...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
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-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru