Какая-то странная проблема XML при попытке загрузить в строку - PullRequest
3 голосов
/ 04 августа 2020

Короче говоря, я теряю пространство от моего xml файла до c#

Файл xml создается Libre Open Office (это экран с текстом), и здесь - это текст при отображении в Libre Open Office

your family's monthly

perfect, а ЗДЕСЬ - XML для этого, отображаемого Notepad ++

<text:span text:style-name="T5">your family&apos;s</text:span><text:span text:style-name="T8"> </text:span><text:span text:style-name="T5">monthly </text:span>

Обратите внимание, как есть ПРОБЕЛ в средний тег? Это хорошо.

Теперь, когда я перехожу в C#, вот мой код ...

   XmlDocument doc = new XmlDocument();
   doc.Load(@"FILEPATH.xml");
   string xmlcontents = doc.InnerXml;

тогда, когда я проверяю содержимое строки «xmlcontents», я это см.

<text:span text:style-name="T2">your family's</text:span><text:span text:style-name="T3"></text:span><text:span text:style-name="T2">monthly </text:span>

Это выводит «ежемесячно вашей семьи» (не очень хорошо!)

Обратите внимание, как УДАЛСЯ промежуток между «семейным» и «ежемесячным»? Это сбивает меня с толку, но если бы я отредактировал однажды загруженный xml, чтобы вручную поставить там место (как видно в блокноте ++), это нормально.

Почему это происходит?

1 Ответ

4 голосов
/ 04 августа 2020

Это вызвано тем, что для PreserveWhitespace-Option по умолчанию установлено значение false.

Метод Load всегда сохраняет значительный пробел. Свойство PreserveWhitespace определяет, сохраняются ли незначительные пробелы, то есть пробелы в содержимом элемента. По умолчанию - false; пробелы в содержимом элемента не сохраняются.

Это должно помочь:

XmlDocument doc = new XmlDocument();
doc.PreserveWhitespace = true;
doc.Load(@"FILEPATH.xml");
string xmlcontents = doc.InnerXml;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...