我有一个格式良好且没有任何空格的 XML。它一定是这样的。当我将其加载到 XMLDocument 进行签名时,自闭合标签会多出一个空格,并且
我有一个格式良好且没有任何空格的 XML。它必须是那样的。
当我将其加载到 XMLDocument 进行签名时,自闭合标签会出现一个额外的空格,并且
<cEAN/>
变成:
<cEAN />
一旦这份文件必须签署,就不可能删除空白。
属性 PreserveWhiteSpace 对结果没有任何影响。
我怎样才能改变这种行为?
我的解决方法如下:
var stream = new MemoryStream();
var writerSettings = new XmlWriterSettings
{
Indent = true,
IndentChars = " ",
NewLineChars = Environment.NewLine,
NewLineHandling = NewLineHandling.Replace,
OmitXmlDeclaration = true,
};
using (var xrmService = new XrmServiceContext(context.Service))
using (XmlWriter writer = XmlWriter.Create(stream, writerSettings))
{
writer.WriteStartElement("xyz");
writer.WriteElementString("abc", "123");
...
writer.WriteEndElement();
writer.Flush();
}
string stringXml = Encoding.UTF8.GetString(stream.ToArray()).Replace(" />", "/>");
p1
byte[] byteArray = Encoding.UTF8.GetBytes(stringXml); MemoryStream formattedStream = new MemoryStream(byteArray);
p2
using (FileStream file = new FileStream(@"filepath\file.xml",
FileMode.Create, FileAccess.Write))
{
formattedStream.CopyTo(file);
file.Flush();
}
formattedStream.Flush();
帮助我实现这一目标的资源: