C#:XmlTextWriter.WriteElementString对空字符串失败? [英] C#: XmlTextWriter.WriteElementString fails on empty strings?
问题描述
我用的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输出是:
The expected XML output is:
<User>
<Username>value</Username>
<Email>value</Email>
</User>
然而,如果例如inputEmail是空的,则结果的XML我得到尽可能如下:
However, if for example inputEmail is empty, the result XML I get as as follows:
<User>
<Username>value</Username>
<Email/>
</User>
而我希望它是:
<User>
<Username>value</Username>
<Email></Email>
</User>
我是什么做错了吗?有没有办法使用,实现我预期的结果在一个简单的方法的XmlTextWriter
?
推荐答案
您的输出是正确的。没有内容的元素应该写成&LT;标签/方式&gt;
Your output is correct. An element with no content should be written as <tag/>
.
您可以通过调用WriteFullEndElement强制使用完整的标签()
You can force the use of the full tag by calling WriteFullEndElement()
writer.WriteStartElement("Email");
writer.WriteString(inputEmail);
writer.WriteFullEndElement();
这将输出&LT;电子邮件和GT;&LT; /电邮方式&gt;
时inputEmail是空的。
That will output <Email></Email>
when inputEmail is empty.
如果你想这样做一次以上,你可以创建一个扩展方法:
If you want to do that more than once, you could create an extension method:
public static void WriteFullElementString(this XmlTextWriter writer,
string localName,
string value)
{
writer.WriteStartElement(localName);
writer.WriteString(value);
writer.WriteFullEndElement();
}
那么你的code将变成:
Then your code would become:
writer.WriteStartElement("User");
writer.WriteFullElementString("Username", inputUserName);
writer.WriteFullElementString("Email", inputEmail);
writer.WriteEndElement();
这篇关于C#:XmlTextWriter.WriteElementString对空字符串失败?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!