Xml InnerXml проблема с отступами - PullRequest
3 голосов
/ 20 марта 2012

У меня есть XmlDocument, например:

<Root>
  <Settings>
    <PresentationSettings>
    </PresentationSettings>
  </Settings>
</Root>

Когда я задаю InnerXml из <PresentationSettings> с этим текстом ...

<Desktop>
  <WidgetElements>
    <WidgetElement Name="1">
    </WidgetElement>
    <WidgetElement Name="2">
    </WidgetElement>
  </WidgetElements>
</Desktop>

...выходной файл сохраняется следующим образом:

<Root>
  <Settings>
    <PresentationSettings>
      <Desktop>
  <WidgetElements>
    <WidgetElement Name="1">
    </WidgetElement>
    <WidgetElement Name="2">
    </WidgetElement>
  </WidgetElements>
</Desktop>
    </PresentationSettings>
  </Settings>
</Root>

Кажется, что корень InnerXml (т.е. <Desktop>) начинается с правого отступа столбца, но остальная часть InnerXml сохраняетэто оригинальный отступ.Я перепробовал много методов, но все они дают одинаковый результат.Я попробовал следующие методы:

  • XmlTextWriter с Formatting = Formatting.Indented.
  • XmlWriter с XmlWriterSettings { Indent = true }.
  • Преобразование в XDocument с обоимиописанные выше методы.
  • Использование XmlDocumentFragment.

Кто-нибудь может указать мне направление записи?Что я делаю не так?

1 Ответ

2 голосов
/ 20 марта 2012

Вы должны использовать XDocument или XElement, XmlDocument - это .Net 2.0, он же устаревший.

Вместо этого напишите:

XElement root = XElement.Parse("<Root><Settings><PresentationSettings></PresentationSettings></Settings></Root>");
XElement pSettings = root.Element("Settings").Element("PresentationSettings");
pSettings.Add(otherContentXml);
root.Save(fileName);
or
string formattedXml = root.ToString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...