У меня есть XML-документ, который я хочу сериализовать с нормализованными отступами (используя два пробела), но сохраняя любые дополнительные разрывы строк между элементами.Я использую C #.Желательно, чтобы нормализовался разрыв строки символов (поэтому они все \r\n
), но, главное, я бы хотел сохранить наличие нескольких последовательных разрывов строки.
Например,учитывая входной документ:
<root>
<elementOne>Hello</elementOne>
<elementTwo>I am misaligned</elementTwo>
<elementThree>I am indented with a Tab character</elementThree>
<!-- Here is a comment preceeding another element -->
<elementFour />
</root>
Я хотел бы создать выходной документ:
<root>
<elementOne>Hello</elementOne>
<elementTwo>I am slightly misaligned</elementTwo>
<elementThree>I am indented with a Tab character</elementThree>
<!-- Here is a comment preceeding another element -->
<elementFour />
</root>
Если я проанализирую входной документ в XElement
, а затем сериализую его, я получувывод с нормализованным интервалом, но удален дополнительный разрыв строки:
<root>
<elementOne>Hello</elementOne>
<elementTwo>I am slightly misaligned</elementTwo>
<elementThree>I am indented with a Tab character</elementThree>
<!-- Here is a comment preceeding another element -->
<elementFour />
</root>
Я попытался использовать XDocument.Load
с LoadOptions.PreserveWhitespace
, но потом не могу найти способ нормализации отступа.Я также попытался использовать XmlWriterSettings
следующим образом:
XmlWriterSettings settings = new XmlWriterSettings {
Indent = true,
IndentChars = " ",
NewLineChars = "\r\n",
NewLineHandling = NewLineHandling.None
};
Но настройка этих настроек, кажется, либо нормализует оба отступа строки и , либо ни того, ни другого.
Причина, по которой мне нужно такое поведение, заключается в том, что я хочу «красиво распечатать» большой редактируемый пользователем XML-документ, чтобы отступ был правильным, но я не хочу удалять разрывы строк, добавленные пользователем, для удобства чтения.