在编写 xml 文档时,我需要编写所有不带任何空格的自闭合标签,例如:
<foo/>
代替:
<foo />
这样做的原因是,我正在与之交互的供应商系统不适合。在理想情况下,供应商会修复他们的系统,但我不打赌这种情况会很快发生。让 XmlWriter 输出不带空格的自闭合标签的最佳方法是什么?
我目前的计划是做类似的事情:
return xml.Replace(" />", "/>");
显然这远非理想。是否可以为该操作子类化 XmlWriter? XmlWriterSettings 中是否有我忽略的设置?
最佳答案
我认为没有这样的选项可以避免在自闭合标签中出现一个空格。根据 MSDN, XmlTextWriter
:
When writing an empty element, an additional space is added between tag name and the closing tag, for example . This provides compatibility with older browsers.
希望你能写<elementName></elementName>
语法而不是不需要的 <elementName />
, 为此使用 XmlWriter.WriteFullEndElement
方法,例如:
using System.Xml;
..
static void Main(string[] args)
{
XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();
xmlWriterSettings.Indent = true;
xmlWriterSettings.IndentChars = ("\t");
xmlWriterSettings.OmitXmlDeclaration = true;
XmlWriter writer = XmlWriter.Create("example.xml", xmlWriterSettings);
writer.WriteStartElement("root");
writer.WriteStartElement("element1");
writer.WriteEndElement();
writer.WriteStartElement("element2");
writer.WriteFullEndElement();
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Close();
}
生成以下 XML 文档:
<root>
<element1 />
<element2></element2>
</root>
关于c# - 编写 xml 文档时去除自闭标签中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6600902/