XmlWriter 到字符串和文件
XmlWriter to both String and File
我可以使用 XmlWriter 向 文件和字符串写入吗?
写入文件时我这样做:
using (var xw = XmlWriter.Create("myFile.xml"))
{
//Build the xml
}
当写入字符串时,我这样做:
using (var sw = new StringWriter())
{
using (var xw = XmlWriter.Create(sw))
{
// Build the xml
}
return sw.ToString();
}
但是我可以使用相同的 XmlWriter 实例写入文件和字符串吗?
您可以创建这样的方法:
private static void WriteXML(TextWriter writer)
{
using (var xw = XmlWriter.Create(writer))
{
// Build the xml
}
}
然后这样称呼它:
using (StreamWriter sw = new StreamWriter(...))
WriteXML(sw);
写入文件或
string xml = String.Empty;
using (StringWriter sw = new StringWriter())
{
WriteXML(sw);
xml = sw.ToString();
}
创建字符串。
您甚至可以创建辅助方法:
private static void WriteXMLFile(string fileName)
{
using (StreamWriter sw = new StreamWriter(...))
WriteXML(sw);
}
private static string GetXML()
{
using (StringWriter sw = new StringWriter())
{
WriteXML(sw);
return sw.ToString();
}
}
创建一个 composite XmlWriter
来包装许多 XmlWriter
个实例。
public class CompositeXmlWriter : XmlWriter
{
private readonly IEnumerable<XmlWriter> writers;
public CompositeXmlWriter(IEnumerable<XmlWriter> writers)
{
this.writers = writers;
}
public override void WriteStartDocument()
{
foreach (var writer in writers)
{
writer.WriteStartDocument();
}
}
public override void WriteEndDocument()
{
foreach (var writer in writers)
{
writer.WriteEndDocument();
}
}
...Implement all other methods
}
使用其他 XmlWriters 创建您的 CompositeXmlWriter
。
using (var xw = new CompositeXmlWriter(new[] { XmlWriter.Create("myFile.xml"), XmlWriter.Create(new StringWriter())})
{
//Build the xml
}
现在 xw
中写入的任何内容都将写入所有 XmlWriters。
我可以使用 XmlWriter 向 文件和字符串写入吗?
写入文件时我这样做:
using (var xw = XmlWriter.Create("myFile.xml"))
{
//Build the xml
}
当写入字符串时,我这样做:
using (var sw = new StringWriter())
{
using (var xw = XmlWriter.Create(sw))
{
// Build the xml
}
return sw.ToString();
}
但是我可以使用相同的 XmlWriter 实例写入文件和字符串吗?
您可以创建这样的方法:
private static void WriteXML(TextWriter writer)
{
using (var xw = XmlWriter.Create(writer))
{
// Build the xml
}
}
然后这样称呼它:
using (StreamWriter sw = new StreamWriter(...))
WriteXML(sw);
写入文件或
string xml = String.Empty;
using (StringWriter sw = new StringWriter())
{
WriteXML(sw);
xml = sw.ToString();
}
创建字符串。
您甚至可以创建辅助方法:
private static void WriteXMLFile(string fileName)
{
using (StreamWriter sw = new StreamWriter(...))
WriteXML(sw);
}
private static string GetXML()
{
using (StringWriter sw = new StringWriter())
{
WriteXML(sw);
return sw.ToString();
}
}
创建一个 composite XmlWriter
来包装许多 XmlWriter
个实例。
public class CompositeXmlWriter : XmlWriter
{
private readonly IEnumerable<XmlWriter> writers;
public CompositeXmlWriter(IEnumerable<XmlWriter> writers)
{
this.writers = writers;
}
public override void WriteStartDocument()
{
foreach (var writer in writers)
{
writer.WriteStartDocument();
}
}
public override void WriteEndDocument()
{
foreach (var writer in writers)
{
writer.WriteEndDocument();
}
}
...Implement all other methods
}
使用其他 XmlWriters 创建您的 CompositeXmlWriter
。
using (var xw = new CompositeXmlWriter(new[] { XmlWriter.Create("myFile.xml"), XmlWriter.Create(new StringWriter())})
{
//Build the xml
}
现在 xw
中写入的任何内容都将写入所有 XmlWriters。