我正在使用XmlTextWriter
及其WriteElementString
方法,例如:
XmlTextWriter writer = new XmlTextWriter("filename.xml", null);
writer.WriteStartElement("User");
writer.WriteElementString("Username", inputUserName);
writer.WriteElementString("Email", inputEmail);
writer.WriteEndElement();
writer.Close();
预期的XML输出为:
<User>
<Username>value</Username>
<Email>value</Email>
</User>
但是,例如,如果inputEmail为空,则得到的结果XML如下所示:
<User>
<Username>value</Username>
<Email/>
</User>
而我希望它是:
<User>
<Username>value</Username>
<Email></Email>
</User>
我究竟做错了什么?有没有一种方法可以使用
XmlTextWriter
以一种简单的方式实现我的预期结果? 最佳答案
您的输出是正确的。没有内容的元素应写为<tag/>
。
您可以通过调用WriteFullEndElement()强制使用完整标签。
writer.WriteStartElement("Email");
writer.WriteString(inputEmail);
writer.WriteFullEndElement();
当inputEmail为空时,将输出
<Email></Email>
。如果您想多次执行此操作,则可以创建一个扩展方法:
public static void WriteFullElementString(this XmlTextWriter writer,
string localName,
string value)
{
writer.WriteStartElement(localName);
writer.WriteString(value);
writer.WriteFullEndElement();
}
然后您的代码将变为:
writer.WriteStartElement("User");
writer.WriteFullElementString("Username", inputUserName);
writer.WriteFullElementString("Email", inputEmail);
writer.WriteEndElement();