Skip to main content

Write an XElement to XmlWriter

Write an XElement to XmlWriter using the WriteTo method

Public Sub XLinq15()
    Dim po1 = <PurchaseOrder>
                  <Item price="100">Motor</Item>
              </PurchaseOrder>

    Dim po2 = <PurchaseOrder>
                  <Item price="10">Cable</Item>
              </PurchaseOrder>

    Dim po3 = <PurchaseOrder>
                  <Item price="10">Switch</Item>
              </PurchaseOrder>

    Dim sw = New StringWriter()
    Dim settings = New XmlWriterSettings()
    settings.Indent = True
    Dim w = XmlWriter.Create(sw, settings)
    w.WriteStartElement("PurchaseOrders")

    po1.WriteTo(w)
    po2.WriteTo(w)
    po3.WriteTo(w)

    w.WriteEndElement()
    w.Close()
    Console.WriteLine(sw.ToString())
End Sub

Result:
<?xml version="1.0" encoding="utf-16"?>
<PurchaseOrders>
  <PurchaseOrder>
    <Item price="100">Motor</Item>
  </PurchaseOrder>
  <PurchaseOrder>
    <Item price="10">Cable</Item>
  </PurchaseOrder>
  <PurchaseOrder>
    <Item price="10">Switch</Item>
  </PurchaseOrder>
</PurchaseOrders>


Write the content of a Dim to XmlWriter

Write the content of a Dim to XmlWriter using the WriteTo method

Public Sub XLinq16()
    Dim doc1 = _
        <PurchaseOrders>
            <PurchaseOrder>
                <Item price="100">Motor</Item>
            </PurchaseOrder>
            <PurchaseOrder>
                <Item price="10">Cable</Item>
            </PurchaseOrder>
        </PurchaseOrders>

    Dim doc2 = _
        <PurchaseOrders>
            <PurchaseOrder>
                <Item price="10">Switch</Item>
            </PurchaseOrder>
        </PurchaseOrders>

    Dim sw = New StringWriter()
    Dim w = XmlWriter.Create(sw)
    w.WriteStartDocument()
    w.WriteStartElement("AllPurchaseOrders")
    doc1.WriteTo(w)
    doc2.WriteTo(w)
    w.WriteEndElement()
    w.WriteEndDocument()
    w.Close()
    Console.WriteLine(sw.ToString())
End Sub

Result:
<?xml version="1.0" encoding="utf-16"?><AllPurchaseOrders><PurchaseOrders><PurchaseOrder><Item price="100">Motor</Item></PurchaseOrder><PurchaseOrder><Item price="10">Cable</Item></PurchaseOrder></PurchaseOrders><PurchaseOrders><PurchaseOrder><Item price="10">Switch</Item></PurchaseOrder></PurchaseOrders></AllPurchaseOrders>


Save XDocument

SaveDim using XmlWriter/TextWriter/File

Public Sub XLinq17()
    Dim doc = _
        <PurchaseOrders>
            <PurchaseOrder>
                <Item price="100">Motor</Item>
            </PurchaseOrder>
            <PurchaseOrder>
                <Item price="10">Switch</Item>
            </PurchaseOrder>
            <PurchaseOrder>
                <Item price="10">Cable</Item>
            </PurchaseOrder>
        </PurchaseOrders>

    Dim sw = New StringWriter()
    'save to XmlWriter
    Dim settings = New XmlWriterSettings()
    settings.Indent = True
    Dim w = XmlWriter.Create(sw, settings)
    doc.Save(w)
    w.Close()
    Console.WriteLine(sw.ToString())

    'save to file
    doc.Save("out.xml")
End Sub

Result:
<?xml version="1.0" encoding="utf-16"?>
<PurchaseOrders>
  <PurchaseOrder>
    <Item price="100">Motor</Item>
  </PurchaseOrder>
  <PurchaseOrder>
    <Item price="10">Switch</Item>
  </PurchaseOrder>
  <PurchaseOrder>
    <Item price="10">Cable</Item>
  </PurchaseOrder>
</PurchaseOrders>