C# XDocument:如何设置输出格式,使我的值与元素标记位于单独的行上?
我正在读取一个xml文件,其格式如下:C# XDocument:如何设置输出格式,使我的值与元素标记位于单独的行上?,c#,xml,C#,Xml,我正在读取一个xml文件,其格式如下: <?xml version="1.0" encoding="utf-8"?> <Screen_Monitoring> <Interval> 0.05 </Interval> <sendCommand> <![CDATA[01 30 41 30 41 30 36 02 30 31 44 36 03]]> </sendC
<?xml version="1.0" encoding="utf-8"?>
<Screen_Monitoring>
<Interval>
0.05
</Interval>
<sendCommand>
<![CDATA[01 30 41 30 41 30 36 02 30 31 44 36 03]]>
</sendCommand>
</Screen_Monitoring>
然后立即写下来,就像这样:
XDocument xDoc = new XDocument();
xDoc = XDocument.Load(@"C:\MyCode\CONFIGURATION_1NS.xml");
XmlWriterSettings settings = new XmlWriterSettings
{
Indent = true,
IndentChars = " ",
NewLineChars = "\r\n",
NewLineHandling = NewLineHandling.Replace
};
using (XmlWriter writer = XmlWriter.Create(@"C:\MyCode\Config_saved.xml", settings))
{
xDoc.WriteTo(writer);
}
输出与输入文件的内容不匹配,因为sendCommand元素在与标记位于同一行的sendCommand标记之间具有值,因此:
<?xml version="1.0" encoding="utf-8"?>
<Screen_Monitoring>
<Interval>
0.05
</Interval>
<sendCommand><![CDATA[01 30 41 30 41 30 36 02 30 31 44 36 03]]></sendCommand>
</Screen_Monitoring>
0.05
不幸的是,我需要为一个程序生成输出xml,如果xml本身是完全有效的,那么这个程序可能无法正常工作,但它的格式不是它想要的。有没有简单的方法写出Xml,以便使用与元素标记分开的行上的值对其进行格式化?您需要更改
加载选项以保留空白:
XDocument.Load(@"C:\MyCode\CONFIGURATION_1NS.xml", LoadOptions.PreserveWhitespace);
请参见演示-您可以看到结果与输入相同。为了保存,您应该能够直接使用doc.Save(path)
,因为在写入时应该保留现有的空白
另外,您可以删除这一行,因为新的XDocument
会立即被丢弃:
var xDoc = new XDocument();
您需要更改LoadOptions
以保留空白:
XDocument.Load(@"C:\MyCode\CONFIGURATION_1NS.xml", LoadOptions.PreserveWhitespace);
请参见演示-您可以看到结果与输入相同。为了保存,您应该能够直接使用doc.Save(path)
,因为在写入时应该保留现有的空白
另外,您可以删除这一行,因为新的XDocument
会立即被丢弃:
var xDoc = new XDocument();
该程序(消费者)是否使用某种自定义解析器?大多数XML解析器(至少以我的经验)并不关心这些格式问题。。。他们可能正在使用某种定制解析器,但它的工作方式并不像人们希望的那样好。我们过去在使用xml文件时遇到过一些问题,这些xml文件的格式并不像预期的那样。我讨厌与那些认为XML应该定制的第三方打交道,不管他们如何理解或不理解标准XML。你有我的同情心:)关于我能想到的唯一一件事是手动调整你发送的XML,但这可能会a)变得单调乏味,b)有时会导致自己的问题。该程序(消费者)使用某种自定义解析器吗?大多数XML解析器(至少以我的经验)并不关心这些格式问题。。。他们可能正在使用某种定制解析器,但它的工作方式并不像人们希望的那样好。我们过去在使用xml文件时遇到过一些问题,这些xml文件的格式并不像预期的那样。我讨厌与那些认为XML应该定制的第三方打交道,不管他们如何理解或不理解标准XML。我很同情你:)关于我能想到的唯一一件事是手动调整你发送的XML,但这可能会a)变得单调乏味,b)有时会导致它自己的问题。