我正在使用C#(在ASP.NET环境中)创建一个生成XML文件的程序。它使用XmlWriter类进行编写,但有一件事我不知道该怎么做。
说,写一个我做的字符串:
xmlWriter.WriteElementString("c1", "name");
变为:
< c1> name< / c1>
这很好,直到我尝试写一个空字符串:
xmlWriter.WriteElementString("c1", "");
变为:
< c1 />
但是你如何格式化呢?
< c1>< / c1>
答案 0 :(得分:3)
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实现?
答案 1 :(得分:1)
< c1/ >
适用于空元素。就像你如何在html中使用< br/ >
换行一样。
如果您不喜欢这种语法,虽然它是正确的,但您可以手动将包含/>
的所有代码手动解析为<>
</>
。否则,也许您应该考虑使用xmlWriter.WriteElementString(“c1”,“”);
答案 2 :(得分:1)
从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"/>