открытие / сохранение XML при сохранении новой строки между атрибутами узла

Это то, что я до сих пор:

$XML = New-Object System.Xml.XmlDocument
$XML.PreserveWhitespace = $true
$XML.Load($path)
#change some node attributes
$XML.Save($path)

Если я возьму открыть файл XML и возьму фрагмент, как это:

<Node 
Name="tyjytj" 
Number="rthjr" 
Source="rjyrtjrjrtj" 
BinaryDrive="teheherhehtr" />

Это сохранит это так:

<Node Name="tyjytj" Number="rthjr" Source="rjyrtjrjrtj" BinaryDrive="teheherhehtr" />

Но я хочу иметь возможность изменять (например) имя узла, сохраняя при этом новые строки между каждым атрибутом. Я хочу, чтобы формат оставался таким же, каким был до открытия / сохранения.

 jsirr1329 июн. 2012 г., 21:41
Спасибо, я сделаю это. И это облом.
 Lars Truijens29 июн. 2012 г., 20:34
Я не знаю ни одного парсера xml, который бы позволял это. Такое форматирование не является частью структуры xml, поэтому оно теряется при чтении xml, изменении структуры памяти и последующей ее записи. Кроме того, это не зависит от PowerShell. На самом деле вы используете класс .Net. Вы можете получить больше ответов, если расширите свой поиск до .Net

Ответы на вопрос(2)

Пожалуйста, посмотрите наэтот ответ на вопрос, очень похожий на ваш:

Хотя кажется, что нет способа сохранить форматирование атрибута xml, вы можете определить его самостоятельно в документе xml, используя возможности классов XmlWriterSettings и XmlWriter.

Вы можете указать это, чтобы иметь новые строки между атрибутами, например, так:

$xwSettings = new-object System.Xml.XmlWriterSettings
$xwSettings.NewLineOnAttributes = $true

Затем вы сохраняете документ с помощью XmlWriter вместе со следующими настройками:

$xmlWriter = [Xml.XmlWriter]::Create("c:\temp\newlines.xml", $xwSettings)
$doc.Save($xmlWriter)

(Код все от оригинального ответа.vonPryz)

Решение Вопроса

Ни один анализатор XML в мире не скажет вам, разделены ли атрибуты в начальном теге пробелами, символами новой строки или символами табуляции. Вы не должны заботиться.

 10 мая 2018 г., 00:34
PS: перед тем, как присоединиться к людям, голосующим против этого ответа, помните, что голосование вниз целесообразно только тогда, когда ответ неправильный, а не когда он говорит вам правду, которую вы не хотите слышать.
 jsirr1305 мар. 2013 г., 19:50
Читаемость, изменение базовых показателей и модификация значительно облегчают сохранение новых строк. Я думаю, что стоит позаботиться о том, что это то, что вы часто модифицируете (как я делаю в моем случае).

Ваш ответ на вопрос