我“手工”编写一个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 == " "

10-08 00:16