XElement.Save(XmlWriter)
записывает полный XML-документ в цель XmlWriter
, включая объявления начала и конца документа.
Чтобы записать содержимое самого XElement
, он вызывает то же самоеWriteTo
method.
Из справочного источника .NET :
public void Save(XmlWriter writer)
{
if (writer == null)
{
throw new ArgumentNullException("writer");
}
writer.WriteStartDocument();
WriteTo(writer);
writer.WriteEndDocument();
}
XElement.WriteTo(XmlWriter)
просто записывает данные XElement
в цель XmlWriter
.
Из справочного источника .NET :
public override void WriteTo(XmlWriter writer)
{
if (writer == null)
{
throw new ArgumentNullException("writer");
}
new ElementWriter(writer).WriteElement(this);
}
Это позволяет XElement
быть включенным в XmlWriter
, уже содержащий любые другие узлы xml, например.пользовательский корневой элемент xml, как показано ниже.
Также можно сделать несколько вызовов XElement.WriteTo
для одного и того же XmlWriter
.
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>