我正在生成具有以下结构的XElement:
<TestNames>\r\n <Test>YA</Test>\r\n <Test>YO</Test>\r\n </TestNames>
如何以非黑客的方式摆脱空白和\ r \ n:)
更新:
XElement testsXmlDocument= new XElement("TestNames");
foreach (string test in selectedTests)
testsXmlDocument.Add(new XElement("Test",test));
return testsXmlDocument.ToString();
答案 0 :(得分:9)
XElement提供ToString的重载,它接受SaveOptions
类型的参数。此枚举的值之一是DisableFormatting
。
如果这不能给你足够的控制权,那么你需要使用带有XmlWriter实例的XElement的Save
重载。可以使用XmlWriterSettings来控制XmlWriter的输出。
请注意,创建XmlWriter的推荐方法是使用静态Create方法,而不是直接构造一个方法。如果您希望输出为字符串,则可以使用带有StringWriter的重载。
答案 1 :(得分:0)
我必须使用LINQ to XML将数据库数据写入xml文件并从xml文件中读回。记录中的某些字段本身是xml字符串,其中包含\ r \ n字符。这些必须保持完整。我花了几天时间试图找到可行的东西,但似乎微软是通过设计将\ r转换为\ n。
以下解决方案适合我:
将加载的XDocument写入XML文件,保持\ r完整,其中xDoc是XDocument,filePath是字符串:
XmlWriterSettings xmlWriterSettings = new XmlWriterSettings
{ NewLineHandling = NewLineHandling.None, Indent = true };
using (XmlWriter xmlWriter = XmlWriter.Create(filePath, xmlWriterSettings))
{
xDoc.Save(xmlWriter);
xmlWriter.Flush();
}
将XML文件读入保留\ r的XElement:
using (XmlTextReader xmlTextReader = new XmlTextReader(filePath)
{ WhitespaceHandling = WhitespaceHandling.Significant })
{
xmlTextReader.MoveToContent();
xDatabaseElement = XElement.Load(xmlTextReader);
}