清空XmlTextWriter和StringWriter中的所有内容

11

我想清除XmlTextWriter和StringWriter中的所有内容。 Flush()没有起作用。

XmlDocument doc = new XmlDocument(); StringWriter sw = new StringWriter(); XmlTextWriter xw = new XmlTextWriter(sw);

xw.WriteStartElement("AddPhoneQual"); xw.WriteElementString("Type", "B"); xw.WriteElementString("PhoneNumber", bookingDetails.PassengerList[0].PhoneNumber); xw.WriteEndElement();// 结束 AddPhoneQual

doc.LoadXml(sw.ToString());

现在,我需要清除所有内容并开始在清除的xw中编写。

xw.Flush(); sw.GetStringBuilder().Clear();

它们都没有起作用。

1个回答

16
你会认为有一种直观的方法来做到这一点,但是......
我发现的解决方案建议如下:
// make a StringWriter, and fill it with junk
StringWriter sw = new StringWriter();
sw.Write("Don't want to see this");

// and HERE IS THE MAGIC
StringBuilder sb = sw.GetStringBuilder();
sb.Remove(0, sb.Length);

// your StringWriter is now empty!

这对我有用(在与您相同的情况下 - 使用将转储到 StringWriterXmlTextWriter)。也许有人对为什么没有内置类似功能的问题有一个直观的答案。

1
有人指出(感谢@PeteB)我们可以使用长度初始化StringBuilder,这样我们就可以通过以下方式简化代码,将两行StringBuilder替换为:sw.GetStringBuilder().Length = 0; - Michael Paulukonis
21
你可以直接使用 sw.GetStringBuilder().Clear();来清空字符串构建器。 - Anthony Nichols
我不喜欢它,但它能用。谢谢! - Chris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接