XMLDocument:读取 XDocument 并将内容放入其他 XDocument (LINQ)(C#)

XMLDocument: Read XDocument and put contents into other XDocument (LINQ)(C#)

使用 LinQ,我在 XDocument 中有以下内容 machine2.config

<appSettings>
<add key="FreitRaterHelpLoc" value="" />
<add key="FreitRaterWebHome" value="http://GPGBYTOPSPL12/" />
<add key="FreitRaterDefaultSession" value="" />
<add key="FreitRaterTransferMode" value="Buffered" />
<add key="FreitRaterMaxMsgSize" value="524288" />
<add key="FreitRaterMaxArray" value="16384" />
<add key="FreitRaterMaxString" value="32768" />
<add key="FreitRaterSvcTimeout" value="60" />
</appSettings>

我需要将它放在 XDocument 中的特定位置 machine.config

我首先对元素进行了手动硬编码,然后 XPathSelectElement().AddAfterSelf() 工作得很好,可以在我想要的地方获得 xml 块。但是我需要让它从文件中读取,以便可以通过快速编辑文档来更改它。 现在,使用此代码

XDocument doc = XDocument.Load("machine.config");

XDocument AppSettings = XDocument.Load("machine2.config");
string content = AppSettings.ToString();

doc.XPathSelectElement("configuration/configSections").AddAfterSelf(content); //need it to insert after </configSections>

我可以添加它,但它没有以正确的格式复制。而在 machine.config 我得到

</configSections>&lt;appSettings&gt;&lt;add key="FreitRaterHelpLoc" //etc

什么时候应该

</configSections>
<appSettings>
...

无论如何,我很迷茫,所以如果有人知道如何以正确的格式将其从一个文件传输到另一个文件,我将不胜感激。

将代码更改为

XDocument doc = XDocument.Load("machine.config");
XElement AppSettings = XElement.Load("machine2.config"); //NB: not XDocument
doc.XPathSelectElement("configuration/configSections").AddAfterSelf(AppSettings);
doc.Save("machine.config"); //Of course I'm sure you had this line somewhere