c# - 尝试加载到字符串时出现一些奇怪的 XML 问题
问题描述
所以基本上长话短说,我从我的 xml 文件丢失了一个空间到 c#
xml 文件由 Libre Open Office 生成(它是一个带有文本的屏幕),这是在 Libre Open Office 中显示时的文本
your family's monthly
完美,这里是 Notepad++ 显示的 XML
<text:span text:style-name="T5">your family'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++ 中所示),那很好。
为什么会这样?
解决方案
这是由PreserveWhitespace-Option默认设置为 false 引起的。
Load 方法始终保留重要的空白。PreserveWhitespace 属性确定是否保留无关紧要的空白,即元素内容中的空白。默认为假;不保留元素内容中的空白。
这应该有助于:
XmlDocument doc = new XmlDocument();
doc.PreserveWhitespace = true;
doc.Load(@"FILEPATH.xml");
string xmlcontents = doc.InnerXml;
推荐阅读
- c# - 在 C# 中的排序列表中获取 IndexOf 第二个 int 记录
- sql-server - 将 2 个查询合并为 1 个,所以我不必在 excel 中进行 vlookup
- tfs - 为 TFS 2017 安装白名单
- java - 如何更正这个使用 BigInteger 的 java 代码?
- c# - 如何通过 post 发送 xml 请求并使用 c# 接收 xml 响应?
- c# - 错误:无法为表中的标识列插入显式值 - INT 到 tinyInt
- javascript - Trying to make an AJAX API call
- microsoft-graph-api - Microsoft Graph API /search() 在使用纯应用令牌时是否有效
- azure-devops - 如何检索用于 Azure Dev-Ops Analytics Velocity Dashboard Widget 的 Velocity 数据?
- python-3.x - OpenCV 代码打开一个视频,但显示一个被阻止的摄像头