如何用C#';将空字符串写入XML文件;s的XmlWriter类

本文关键字:文件 XML XmlWriter 字符串 何用 | 更新日期: 2023-09-27 18:28:19

我正在使用C#(在ASP.NET环境中)创建一个程序,该程序生成一个XML文件。它使用XmlWriter类进行编写,但有一件事我不确定该怎么做

比方说,我写一个字符串:

xmlWriter.WriteElementString("c1", "name");

变为:

<c1>名称<c1>

这很好,直到我尝试写一个空字符串:

xmlWriter.WriteElementString("c1", "");

变为:

<c1/>

但是你是如何格式化它的呢?

<c1><c1>

如何用C#';将空字符串写入XML文件;s的XmlWriter类

using (XmlWriter writer = new XmlTextWriter(stream)
{
    writer.WriteStartElement("c1") 
    writer.WriteString("") 
    writer.WriteFullEndElement()
}

编辑:这是可测试的代码。如何创建XmlWriter 并不重要

public static void Main()
{
    using (StringWriter sw = new StringWriter())
    {
        using (XmlWriter xw = XmlWriter.Create(sw))
        {
            xw.WriteStartElement("c1");
            xw.WriteString(string.Empty);
            xw.WriteFullEndElement();
        }
        Console.Write(sw.ToString());  // Prints <c1></c1>
    }
}

您使用的XmlWriter实现是什么?

从XML的角度来看,两个构造(<c1/><c1></c1>)是相同的,因此兼容的读取器很可能不会让您区分它们。如果需要特殊的"null"值,请考虑使用xsi:nil(http://w3.org/TR/xmlschema-1/#xsi_nil),这是为此而设计的。

<c1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>

< c1/ >适用于空元素。就像在html中使用< br/ >作为新行一样。

如果您不喜欢这种语法,尽管它是正确的,但您可以手动解析所有包含/>的标记,以手动将其分解为<> </>。否则,也许您应该考虑使用xmlWriter.WriteElementString("c1",");