XML Literals and LINQ to XML

Axis properties: .<child>, ...<descendant>, .@attribute, .Value, indexers (0).

XML literals are a great fit for config generation, reports, SOAP payloads, and HTML/XAML templating.

Security: when loading untrusted XML, use XmlReaderSettings with DtdProcessing = DtdProcessing.Prohibit.

Imports <xmlns:p="urn:shop:products">

Dim catalog = <?xml version="1.0"?>
              <p:catalog updated=<%= Date.UtcNow.ToString("o") %>>
                  <%= From pr In products
                      Order By pr.Name
                      Select <p:product sku=<%= pr.Sku %>>
                                 <p:name><%= pr.Name %></p:name>
                                 <p:price currency="USD"><%= pr.Price %></p:price>
                             </p:product> %>
              </p:catalog>
catalog.Save("catalog.xml")

Dim doc = XDocument.Load("catalog.xml")
Dim expensive = From x In doc...<p:product>
                Where CDec(x.<p:price>.Value) > 100
                Select Sku = x.@sku, Name = x.<p:name>.Value

' Modify
For Each priceEl In doc...<p:price>
    priceEl.Value = (CDec(priceEl.Value) * 1.1D).ToString("F2")
Next
doc.Root.Add(<p:product sku="NEW"><p:name>New</p:name><p:price>1</p:price></p:product>)