Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2012, 22:34   #1
Rastamans
Новичок
Джуниор
 
Регистрация: 20.10.2011
Сообщений: 1
Печаль XML Поиск элемента по значению атрибуту и запись в новый файл

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

Код:
    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 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"/>
        </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"/>
        </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"/>
        </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>
Но у меня почему то в файл записываются все элементы заново а не элементы которые он должен был найти.


Код:
            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();
Пробовал так тоже не работает все равно переписывает весь файл переписывает весь файл =(
Rastamans вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Последовательная запись в xml файл из DataGridView DENIS_POLOTSK C# (си шарп) 5 08.06.2012 11:35
Delfi, поиск слов и запись в файл Lady1 Фриланс 10 29.03.2012 23:00
исправить код .Чтение из файла, фильтр данных и запись в новый файл. edikesh Помощь студентам 0 17.12.2011 18:59
Последовательный поиск С++ (+запись и чтение в файл) MC_CUBE Помощь студентам 0 15.06.2011 11:59
Как выполнить поиск по XML файлу и добавить к нему новый узел в Delphi? LexaL Помощь студентам 0 24.12.2010 17:12