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

Перезапись xml файла

23.11.2015, 19:43. Просмотров 435. Ответов 5
Метки нет (Все метки)

Всем привет, такая проблемма, дан 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
 <CHEATS>
    <cheat>
      <cheat_id>1</cheat_id>
      <cheat_name>Тестовый чит</cheat_name>
      <cheat_author>Dark Net</cheat_author>
      <cheat_description> 
        111
      </cheat_description>
      <cheat_version>1.0 </cheat_version>
      <cheat_url>[url]www.vk.com[/url] </cheat_url>
    </cheat>
    <cheat>
      <cheat_id>1 </cheat_id>
      <cheat_name> test</cheat_name>
      <cheat_author>DNS </cheat_author>
      <cheat_description> 111</cheat_description>
      <cheat_version>1.0 </cheat_version>
      <cheat_url> www.vk.com</cheat_url>
    </cheat>
  </CHEATS>
  <CLIENT>
    <client_version>1.0 </client_version>
    <client_description>11111 </client_description>
  </CLIENT>
надо добавить ещё один блок cheat, оставив без изменений предыдущие блоки. Помогите пожалуйста.
Спасибо за внимание
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2015, 19:43
Ответы с готовыми решениями:

Перезапись XML файла
Всем привет! нужна помощь в перезаписи данных, хранящихся в XML файле. Нужно...

Добавление, а не перезапись XML
Суть: System.IO.StreamWriter Перезаписывает данные(файл) Надо что бы данные...

перезапись файла
Уважаемые знатоки, можно как-то организовать защиту перезаписи или удаления...

Обработка и перезапись файла
здравствуйте, нужно написать программу. Допустим у нас есть текстовый файл...

Перезапись текстового файла, bat
Имеется бат файл. Пример: echo %time% &gt;&gt; time.txt Результат: 15:28 ...

5
IamRain
1376 / 1230 / 387
Регистрация: 02.08.2011
Сообщений: 3,628
23.11.2015, 22:31 2
Изменил xml-файл вот на такой, поскольку xml более чем c одним корневым тегом не является формально корректным:
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
<cheatsconfig>
  <CHEATS>
    <cheat>
      <cheat_id>1</cheat_id>
      <cheat_name>Тестовый чит</cheat_name>
      <cheat_author>Dark Net</cheat_author>
      <cheat_description> 
        111
      </cheat_description>
      <cheat_version>1.0 </cheat_version>
      <cheat_url>[url]www.vk.com[/url] </cheat_url>
    </cheat>
    <cheat>
      <cheat_id>1 </cheat_id>
      <cheat_name> test</cheat_name>
      <cheat_author>DNS </cheat_author>
      <cheat_description> 111</cheat_description>
      <cheat_version>1.0 </cheat_version>
      <cheat_url> www.vk.com</cheat_url>
    </cheat>
  </CHEATS>
  <CLIENT>
    <client_version>1.0 </client_version>
    <client_description>11111 </client_description>
  </CLIENT>
</cheatsconfig>
Кликните здесь для просмотра всего текста
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
public class CheatXmlRepository
    {
        private readonly string _pathToFile;
 
        public CheatXmlRepository(string pathToFile)
        {
            // либо если не существует - создавать файл и помещать туда корневой и ключевые теги
            if (string.IsNullOrEmpty(pathToFile)) throw new ArgumentNullException("pathToFile");
            _pathToFile = pathToFile;
        }
 
        public void AddCheatToFile(Cheat cheat)
        {
            if (cheat == null) throw new ArgumentNullException("cheat");
            if (!File.Exists(_pathToFile)) throw new FileNotFoundException("Xml-файл не найден.");
 
            XmlDocument xdocument = new XmlDocument();
            xdocument.Load(_pathToFile);
            AddChildCheatTag(xdocument,cheat);
            xdocument.Save(_pathToFile);
        }
 
        #region Details
 
 
        private void AddChildCheatTag(XmlDocument document, Cheat cheat)
        {
            // имена тегов можно вынести в статический класс и сделать константами
            var child = document.CreateNode(XmlNodeType.Element, "cheat", null);
 
            var cheatId = document.CreateNode(XmlNodeType.Element, "cheat_id", null);
            cheatId.InnerText = cheat.CheatId.ToString();
            child.AppendChild(cheatId);
 
            var cheatName = document.CreateNode(XmlNodeType.Element, "cheat_name", null);
            cheatName.InnerText = cheat.CheatName;
            child.AppendChild(cheatName);
 
            var cheatAuthor = document.CreateNode(XmlNodeType.Element, "cheat_author", null);
            cheatAuthor.InnerText = cheat.CheatAuthor;
            child.AppendChild(cheatAuthor);
 
            var cheatDescription = document.CreateNode(XmlNodeType.Element, "cheat_description", null);
            cheatDescription.InnerText = cheat.CheatDescription;
            child.AppendChild(cheatDescription);
 
 
            var cheatVersion = document.CreateNode(XmlNodeType.Element, "cheat_version", null);
            cheatVersion.InnerText = cheat.CheatVersion.ToString();
            child.AppendChild(cheatVersion);
            
            var cheatUrl = document.CreateNode(XmlNodeType.Element, "cheat_url", null);
            cheatUrl.InnerText = cheat.CheatUrl;
            child.AppendChild(cheatUrl);
 
            var cheatsTag = document.FirstChild.FirstChild;
            cheatsTag.AppendChild(child);
        }
 
        #endregion
 
...
 
private static void Main(string[] args)
        {
            var path = Assembly.GetExecutingAssembly().Location;
            var pathToFile = Path.Combine(Path.GetDirectoryName(path), "cheats.xml");
            var rep = new CheatXmlRepository(pathToFile);
 
            var cheat = new Cheat()
            {
                CheatId = 1,
                CheatAuthor = "Читер Вася",
                CheatUrl = "someurl",
                CheatVersion = 1.0,
                CheatDescription = "makes hero immortal",
                CheatName = "whoisyourdaddy"
            };
            rep.AddCheatToFile(cheat);
            Console.ReadKey(true);
        }
 
 
 
    }
0
EvilFromHell
948 / 847 / 345
Регистрация: 26.04.2012
Сообщений: 2,648
23.11.2015, 22:40 3
Опередил Но все равно выложу свой вариант дабы не пропадал:
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
        private void button1_Click(object sender, EventArgs e)
        {
           var XML = XDocument.Parse(@"
    <ROOT>
    <CHEATS>
    <cheat>
      <cheat_id>1</cheat_id>
      <cheat_name>Тестовый чит</cheat_name>
      <cheat_author>Dark Net</cheat_author>
      <cheat_description> 
        111
      </cheat_description>
      <cheat_version>1.0 </cheat_version>
      <cheat_url>[url]www.vk.com[/url] </cheat_url>
    </cheat>
    <cheat>
      <cheat_id>1 </cheat_id>
      <cheat_name> test</cheat_name>
      <cheat_author>DNS </cheat_author>
      <cheat_description> 111</cheat_description>
      <cheat_version>1.0 </cheat_version>
      <cheat_url> www.vk.com</cheat_url>
    </cheat>
  </CHEATS>
  <CLIENT>
    <client_version>1.0 </client_version>
    <client_description>11111 </client_description>
  </CLIENT>
  </ROOT>
");
            XElement cheat = new XElement("cheat",
     new XElement("cheat_id", 1),
     new XElement("cheat_name", 2),
     new XElement("cheat_author", 3),
     new XElement("cheat_description", 4),
     new XElement("cheat_version", 5),
     new XElement("cheat_url", 6)
 );
            XML.Descendants("CHEATS").First().Add(cheat);
            MessageBox.Show(XML.ToString());
        }
    }
Добавлено через 20 секунд
B да, XML некорректный, поэтому я так же добавил туда корневой элемент.
1
IamRain
1376 / 1230 / 387
Регистрация: 02.08.2011
Сообщений: 3,628
23.11.2015, 22:42 4
EvilFromHell, У тебя намного меньше кода. Это плюс
0
EvilFromHell
948 / 847 / 345
Регистрация: 26.04.2012
Сообщений: 2,648
23.11.2015, 22:50 5
IamRain, зато мой код не будет работать на .NET ниже 3.5, а твой будет
0
Stalker_Pro
0 / 0 / 0
Регистрация: 20.03.2015
Сообщений: 35
26.11.2015, 19:36  [ТС] 6
хм
щас попробую, просто клиент для группы делаю)
0
26.11.2015, 19:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2015, 19:36

Считывание данных из файла и перезапись
Здравствуйте! Мне необходима ваша помощь. Вот код мой: using System;...

Нужен Совет, перезапись файла
Есть класс, наследник FileStream В определенный момент надо отчистить файл. и...

Перезапись hidden файла в C:\Program Files
Всем доброго времени суток!:) Разрабатываю программу, которая будет хранить...


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

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

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