【问题标题】:How to write an empty string into XML file with C#'s XmlWriter class?如何使用 C# 的 XmlWriter 类将空字符串写入 XML 文件?
【发布时间】:2012-03-17 23:10:15
【问题描述】:

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

说,写一个字符串我做:

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

变成:

名称

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

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

变成:

但是你如何格式化它呢?

【问题讨论】:

标签: c# asp.net xml xmlwriter


【解决方案1】:
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 实现?

【讨论】:

  • 它应该是 XmlTextWriter,还是只是 XmlWriter?因为我似乎无法让它与 jusr XmlWriter 一起工作......
  • XmlWriter 是一个抽象类。您使用的是什么 XmlWriter 实现?您也可以使用using (XmlWriter writer = XmlWriter.Create(stream))。我怀疑您使用的作家是否重要。重点应该是明确地编写一个开始元素和一个完整的结束元素。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    &lt; c1/ &gt; 适用于空元素。就像在 html 中使用 &lt; br/ &gt; 换行一样。

    如果您不喜欢这种语法,虽然它是正确的,但您可以手动解析所有包含/&gt; 的标签以手动分解为&lt;&gt; &lt;/&gt;。否则,也许您应该考虑使用 xmlWriter.WriteElementString("c1", " ");

    【讨论】:

    • 是的,我知道。为了我的目的,两个有所作为。 被视为 null 并且 c1 > - 被视为空字符串。
    • @ahmd0,从 XML 的角度来看,这两个结构是相同的,因此兼容的阅读器很可能不会让您区分它们。如果您需要特殊的“null”值,请考虑使用为此设计的 xsi:nil (w3.org/TR/xmlschema-1/#xsi_nil)。
    • @Alexei Levenkov 为什么不将其作为单独的答案发布。这似乎就是发生的事情——我的问题的答案是否定的,一个人做不到。我会标记它。
    猜你喜欢
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-09
    相关资源
    最近更新 更多