如何用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>
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",");