XML Редактировать в файл, используя C# - PullRequest
0 голосов
/ 25 марта 2020

Я работаю над приложением WPF, и у меня есть простой файл XML, который я анализирую с использованием 'XmlDocument' и работает нормально для части readinh. Я хочу, чтобы использование могло добавлять, редактировать или удалять любой узел и сохранять эти изменения в файле.

Я пытался использовать XElement, но, похоже, он изменяет сам экземпляр, а не файл.

Мой XML файл выглядит примерно так:

<Configuration>
    <A_0.04_5>
        <ML407Configuration>
            <AM_Amp>10</AM_Amp>
            <AMRJ_Amp>10</AMRJ_Amp>
            <FM_Freq>20</FM_Freq>
            <FM_Phase_Shift>20</FM_Phase_Shift>
        </ML407Configuration>
        <BertConfiguration>
            <BERT_LR>25.78125</BERT_LR>
            <BERT_PRBS>7</BERT_PRBS>
            <BERT_Scaling>1000</BERT_Scaling>
        </BertConfiguration>
    </A_0.04_5>
    <B_1.333_0.15>
        <ML407Configuration>
            <AM_Amp>10</AM_Amp>
            <AMRJ_Amp>10</AMRJ_Amp>
            <FM_Freq>20</FM_Freq>
            <FM_Phase_Shift>20</FM_Phase_Shift>
        </ML407Configuration>
        <BertConfiguration>
            <BERT_LR>25.78125</BERT_LR>
            <BERT_PRBS>7</BERT_PRBS>
        </BertConfiguration>
    </B_1.333_0.15>

    <C_4_0.05>
        <ML407Configuration>
            <BUJ_LR>25</BUJ_LR>
            <BUJ_Pattern>7</BUJ_Pattern>
            <PM_BUJ_Amp>7</PM_BUJ_Amp>
            <BUJ_Amp>80</BUJ_Amp>
            </ML407Configuration>
        <BertConfiguration>
            <BERT_LR>25.78125</BERT_LR>
            <BERT_PRBS>7</BERT_PRBS>
        </BertConfiguration>
    </C_4_0.05> 
</Configuration>

Я попробовал следующее:

string filePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)+"/Configuration.xml";
XElement xml = XElement.Load(filePath);
// This seems to remove the node from xml instance and not from the file
// Should I save the file again or is there another way to do it
// Same applies for add and edit
xml.Elements("C_4_0.05").Remove();

Я видел много похожих вопросов, но я не не знаю, изменится ли какой-либо из них непосредственно в файл или нет

1 Ответ

1 голос
/ 26 марта 2020

XElement.Load загружает структуру XML из файла в память. Любые изменения, которые вы вносите в эту структуру, также делаются в памяти. Если вы хотите записать эти изменения обратно в файл (технически называемый serialization ), вам нужно позвонить XElement.Save.

...