我“手工”编写一个xml文件(即不使用linqtoxml),它有时包含一个包含单个空格字符的open/close标记。在查看结果文件时,所有内容都显示正确,示例如下…
<Item>
<ItemNumber>3</ItemNumber>
<English> </English>
<Translation>Ignore this one. Do not remove.</Translation>
</Item>
…这样做的原因是多方面的,是不必要的。
稍后,我使用一个c程序和linq to xml读取文件并提取记录…
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: >>><<<
…我添加的>>>和<<
最佳答案
加载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 == " "