Если ваша целевая система обрабатывает пустые элементы xml таким же образом, как и самозакрывающиеся элементы xml - , как и в целом, оба считаются равными (но учитывайте замечания на этом post ) - вы можете реализовать пользовательский XmlWriter
, который выводит самозакрывающиеся теги XML в виде пустых тегов XML.
Пустые теги xml не будут содержать пробелов в своем теге, например. <value></value>
.
Пользовательский XmlTextWriter
в приведенном ниже примере создает следующий xml.
Обратите внимание на теги <value></value>
и то, что значение пробела для valueWithWhitespace
было сохранено.
<root><value></value><valueWithWhitespace> </valueWithWhitespace></root>
<час>
var xml = XElement.Parse(
"<root><value /><valueWithWhitespace> </valueWithWhitespace></root>",
LoadOptions.PreserveWhitespace
);
var stringWriter = new StringWriter();
using (var xmlWriter = new CustomXmlTextWriter(stringWriter))
{
xml.WriteTo(xmlWriter);
xmlWriter.Flush();
Console.WriteLine(stringWriter);
}
<ч />
public class CustomXmlTextWriter : XmlTextWriter
{
public CustomXmlTextWriter(TextWriter writer)
: base(writer)
{}
public CustomXmlTextWriter(Stream stream, Encoding encoding)
: base(stream, encoding)
{}
public CustomXmlTextWriter(string filename, Encoding encoding)
: base(filename, encoding)
{}
public override void WriteEndElement()
{
this.WriteFullEndElement();
}
}