首页 > 解决方案 > 尝试加载到字符串时出现一些奇怪的 XML 问题

问题描述

所以基本上长话短说,我从我的 xml 文件丢失了一个空间到 c#

xml 文件由 Libre Open Office 生成(它是一个带有文本的屏幕),这是在 Libre Open Office 中显示时的文本

your family's monthly

完美,这里是 Notepad++ 显示的 XML

<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>

这会输出“your family'smonthly”(不好!)

注意“家庭”和“每月”之间的空间是如何消失的?这把我搞砸了,但如果我要在加载后编辑 xml 以手动在其中放置一个空间(如 notepad++ 中所示),那很好。

为什么会这样?

标签: c#xml

解决方案


这是由PreserveWhitespace-Option默认设置为 false 引起的。

Load 方法始终保留重要的空白。PreserveWhitespace 属性确定是否保留无关紧要的空白,即元素内容中的空白。默认为假;不保留元素内容中的空白。

这应该有助于:

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

推荐阅读