Добавление в определенном месте в XML с помощью c # - PullRequest
0 голосов
/ 15 мая 2018

У меня есть такой XML-файл

<?xml version="1.0" encoding="utf-8"?>
<MY_COMPUTER>
    <HARDWARE uid="" update="" functions=""  />
    <SOFTWARE>
        <GAMES uid="" update="" functions=""  url="">
            <GAME1 Game1-Attribute1="" />
            <GAME2 Game2-Attribute1="" Game2-Attribute2="" Game2-Attribute3="" Game2-Attribute4="" />
            <GAME3 Game3-Attribute1="" Game3-Attribute2="" Game3-Attribute3=""/>
            <GAME4 Game4-Attribute1="" Game4-Attribute2=""/>
        </GAMES>
    </SOFTWARE>
</MY_COMPUTER>

Я пытаюсь добавить новые типы программного обеспечения в этот XML-файл, например, браузеры, браузер будет таким же, как игра, у него будет браузер1, браузер2и несколько браузеров будут иметь атрибуты.Я использовал это

string filePath = "test.xml";

            XElement root = XElement.Load(filePath, LoadOptions.PreserveWhitespace);
 root.Add(
                        new XElement("BROWSER",
                        new XAttribute("uid",""), new XAttribute("update", ""),
                            new XElement("BROWSER2"),
                            new XElement("BROWSER3"),
                            new XElement("BROWSER4"), 
                            )
                            );

root.Save(filePath, SaveOptions.DisableFormatting);

, но с этим кодом, добавляющим его в ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ, я знаю, что, вероятно, допустил действительно большую ошибку новичка, но я не мог ее исправить, кто-то может мне помочь?Я также проверил много вопросов об этом на stackoverflow, но я все еще не мог справиться с этим.Люди говорят, что есть много способов, таких как использование LINQ или потока, я не знаю, какой использовать, но этот файл не будет очень большим, поэтому мне просто нужен способ, который будет работать. Спасибо

1 Ответ

0 голосов
/ 15 мая 2018

Причина добавления этой части XML после программного элемента заключается в том, что вы добавляете его к самому элементу root (root.Add).

Если вы хотите добавить его в элемент программного обеспечения, вам следует соответствующим образом изменить свой код.

Найдите необходимый элемент и вызовите вместо него метод Add.

var softwareElement = root.Descendants("SOFTWARE").First();

softwareElement.Add(
    new XElement("BROWSER",
        new XAttribute("uid", ""), new XAttribute("update", ""),
        new XElement("BROWSER2"),
        new XElement("BROWSER3"),
        new XElement("BROWSER4")
    )
);

Затем сохраните все xml как ранее.

root.Save(filePath, SaveOptions.DisableFormatting);
...