c# - 编写 xml 文档时去除自闭标签中的空格

标签 c# xml linq-to-xml

在编写 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/

相关文章:

xml - 表示数据库模式的标准文件格式

c# - 从 XML 文件填充 ListView

android - AttributeSet 值返回 @2131296269 - 它是什么以及如何使用?

xml - 在 Perl 中解析 XML 文件 - 保留序列

c# - 核心数据与 LINQ to SQL?

c# - VB.NET - 线程池和在 c# 中委托(delegate)给 VB.NET

c# - Linq to XML 未获取所有节点

.net - 只有我吗?与 XPath 相比,我发现 LINQ to XML 有点麻烦

c# - Html Agility Pack 链接和 img src 提取

c# - 提高MMO游戏性能