Как мне написать фрагментированный файл xml без элемента root? - PullRequest
0 голосов
/ 18 февраля 2020

Я получил фрагментированный xml файл (документ без root элемента / узла):

<?xml version="1.0" standalone="no" ?>
<WndPos name="Login" l="703" r="1264" t="323" b="909" />
<WndPos name="Main" l="703" r="768" t="323" b="609" />
<LayerManager />
<ViewLayers name="Roof" roof="1">
    <Layer level="1" visible="1" />
</ViewLayers>
<DirProfiles>
    <ProfileInfo ProfileName="Control" DatabasePath="D:\Database\Control" />
</DirProfiles>
<DirHistory>
     <ProfileInfo Use="Database" Path="D:\Database\Control" />
</DirHistory>

Я читаю этот файл, используя следующее:

string xmlPath = Environment.GetEnvironmentVariable("USERPROFILE") + "\\my.xml";

XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;

XDocument doc = new XDocument(new XElement("root"));
XElement root = doc.Descendants().First();

using (StreamReader fs = new StreamReader(xmlPath))
using (XmlReader xr = XmlReader.Create(fs, settings))
{
    while(xr.Read())
    {
        if (xr.NodeType == XmlNodeType.Element)
        {
            root.Add(XElement.Load(xr.ReadSubtree())); 
        }
     }
}

Позже Я изменяю <DirProfiles>...</DirProfiles> раздел и получаю следующие данные:

<?xml version="1.0" standalone="no" ?>
<WndPos name="Login" l="703" r="1264" t="323" b="909" />
<WndPos name="Main" l="703" r="768" t="323" b="609" />
<LayerManager />
<ViewLayers name="Roof" roof="1">
    <Layer level="1" visible="1" />
</ViewLayers>
<DirProfiles>
    <ProfileInfo ProfileName="Control1" DatabasePath="D:\Database\Control1" />
    <ProfileInfo ProfileName="Control2" DatabasePath="D:\Database\Control2" />
    <ProfileInfo ProfileName="Control3" DatabasePath="D:\Database\Control3" />
    <ProfileInfo ProfileName="Control4" DatabasePath="D:\Database\Control4" />
    <ProfileInfo ProfileName="Control5" DatabasePath="D:\Database\Control5" />
</DirProfiles>
<DirHistory>
     <ProfileInfo Use="Database" Path="D:\Database\Control" />
</DirHistory>

Этот результат xml фрагмент я должен записать в файл, который должен быть фрагментирован xml файл (без элемента root). Я попытался сделать следующее:

doc.Save();

Но он сохраняется с элементом root, и приложение не может работать с этим xml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...