XElement.WriteTo(XmlWriter) 和 XElement.Save(XmlWriter) 有什么区别?
What's the difference between XElement.WriteTo(XmlWriter) and XElement.Save(XmlWriter)?
XElement.WriteTo(XmlWriter)
和XElement.Save(XmlWriter)
有什么区别?或者它们是一样的?
XElement.Save(XmlWriter)
将完整的 xml 文档写入目标 XmlWriter
,包括开始和结束文档声明。
要写入 XElement
本身的内容,它会调用相同的 WriteTo
方法。
public void Save(XmlWriter writer)
{
if (writer == null)
{
throw new ArgumentNullException("writer");
}
writer.WriteStartDocument();
WriteTo(writer);
writer.WriteEndDocument();
}
XElement.WriteTo(XmlWriter)
只是将给定的 XElement
写入目标 XmlWriter
.
public override void WriteTo(XmlWriter writer)
{
if (writer == null)
{
throw new ArgumentNullException("writer");
}
new ElementWriter(writer).WriteElement(this);
}
这允许 XElement
包含在已经包含任何其他 xml 节点的 XmlWriter
中,例如。自定义根 xml 元素,如下所示。
也可以对同一个 XmlWriter
.
进行多次 XElement.WriteTo
调用
XElement xml = XElement.Parse("<foo>bar</foo>");
StringBuilder builder = new StringBuilder();
using (XmlWriter writer = XmlWriter.Create(builder))
{
writer.WriteStartDocument();
writer.WriteStartElement("root");
xml.WriteTo(writer);
writer.WriteEndElement();
writer.WriteEndDocument();
}
Console.WriteLine(builder.ToString());
以上结果:
<?xml version="1.0" encoding="utf-16"?>
<root>
<foo>bar</foo>
</root>
XElement.WriteTo(XmlWriter)
和XElement.Save(XmlWriter)
有什么区别?或者它们是一样的?
XElement.Save(XmlWriter)
将完整的 xml 文档写入目标 XmlWriter
,包括开始和结束文档声明。
要写入 XElement
本身的内容,它会调用相同的 WriteTo
方法。
public void Save(XmlWriter writer)
{
if (writer == null)
{
throw new ArgumentNullException("writer");
}
writer.WriteStartDocument();
WriteTo(writer);
writer.WriteEndDocument();
}
XElement.WriteTo(XmlWriter)
只是将给定的 XElement
写入目标 XmlWriter
.
public override void WriteTo(XmlWriter writer)
{
if (writer == null)
{
throw new ArgumentNullException("writer");
}
new ElementWriter(writer).WriteElement(this);
}
这允许 XElement
包含在已经包含任何其他 xml 节点的 XmlWriter
中,例如。自定义根 xml 元素,如下所示。
也可以对同一个 XmlWriter
.
XElement.WriteTo
调用
XElement xml = XElement.Parse("<foo>bar</foo>");
StringBuilder builder = new StringBuilder();
using (XmlWriter writer = XmlWriter.Create(builder))
{
writer.WriteStartDocument();
writer.WriteStartElement("root");
xml.WriteTo(writer);
writer.WriteEndElement();
writer.WriteEndDocument();
}
Console.WriteLine(builder.ToString());
以上结果:
<?xml version="1.0" encoding="utf-16"?>
<root>
<foo>bar</foo>
</root>