标签:c xml linq-to-xml
我“手动”编写了一个XML文件(即不使用LINQ to XML),它有时包含一个包含单个空格字符的打开/关闭标记.查看生成的文件后,所有内容都显示正确,例如下面的示例
<Item>
<ItemNumber>3</ItemNumber>
<English> </English>
<Translation>Ignore this one. Do not remove.</Translation>
</Item>
……这样做的原因是多种多样的,无关紧要的,已经完成了.
后来,我使用一个带有LINQ to XML的C#程序来读取文件并提取记录……
XElement X_EnglishE = null; // This is CRAZY
foreach (XElement i in Records)
{
X_EnglishE = i.Element("English"); // There is only one damned record!
}
string X_English = X_EnglishE.ToString();
…并进行测试以确保它与数据库记录保持不变.当处理字段具有单个空格字符的项时,我检测到更改…
+E+ Text[3] English source has been altered:
Was: >>> <<<
Now: >>><<<
…>>>和<<<我添加的部分,看看发生了什么,(很难看到空格字符).我已经摆弄了这个,但不明白为什么会这样.它并不是绝对关键的,因为该字段未被使用,(但),但我不能相信C#或LINQ或者其他任何事情,如果我不明白它为什么会这样.那是怎么回事?为什么?
解决方法:
加载XML字符串时需要保留空格:
XDocument doc = XDocument.Parse(@"
<Item>
<ItemNumber>3</ItemNumber>
<English> </English>
<Translation>Ignore this one. Do not remove.</Translation>
</Item>", LoadOptions.PreserveWhitespace);
string X_English = (string)doc.Root.Element("English");
// X_English == " "
标签:c,xml,linq-to-xml 来源: https://codeday.me/bug/20190606/1190955.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。