C# 避免XML中的自动关闭标记
我正在尝试下面的代码来序列化一个对象。问题是,如果某些元素为空,则它们具有如下自动关闭标记:C# 避免XML中的自动关闭标记,c#,xml,C#,Xml,我正在尝试下面的代码来序列化一个对象。问题是,如果某些元素为空,则它们具有如下自动关闭标记: 我想成为这样的。有什么想法吗 private string GetXMLFromObject(object o) { XmlWriterSettings settings = new XmlWriterSettings(); settings.OmitXmlDeclaration = true; MemoryStream ms = new MemoryStream();
我想成为这样的
。有什么想法吗
private string GetXMLFromObject(object o)
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
MemoryStream ms = new MemoryStream();
XmlWriter writer = XmlWriter.Create(ms, settings);
XmlSerializerNamespaces names = new XmlSerializerNamespaces();
names.Add("", "");
XmlSerializer serializer = new XmlSerializer(o.GetType());
serializer.Serialize(writer, o, names);
ms.Flush();
ms.Seek(0, SeekOrigin.Begin);
StreamReader sr = new StreamReader(ms);
string xml = sr.ReadToEnd();
return xml;
}
关于有效性,
和
都是有效的,任何XML解析器都会正确处理它们
如果仍要强制执行,请执行以下操作。您正在寻找的是writeFileLendElement()
方法。更多信息:
writer.WriteStartElement("City");
writer.WriteString(inputCity);
writer.WriteFullEndElement();
当
inputCity
为空时,这将强制它将City
序列化为
。类似于
或
?另外,根据XML规范,具有自动关闭标记的元素在语义上等同于立即关闭的元素,那么您为什么要这样做呢?我需要将XML传递给一个WCF服务,该服务无法识别这一点,您需要说明为什么自动关闭标记是一个问题。如果您不能处理格式良好的XML下游,那么您的设计就有问题。