Skip to main content

Get the outer XML of a node

Get the outer XML of a node

Public Sub XLinq90()
    Dim myOrder = _
        <order>
            <item price="150">Motor</item>
            <item price="50">Cable</item>
            <item price="50">Modem</item>
            <item price="250">Monitor</item>
            <item price="10">Mouse</item>
        </order>
    Console.WriteLine(myOrder)
End Sub

Result:
<order>
  <item price="150">Motor</item>
  <item price="50">Cable</item>
  <item price="50">Modem</item>
  <item price="250">Monitor</item>
  <item price="10">Mouse</item>
</order>


Get the inner text of a node

Get the inner text of a node

Public Sub XLinq91()
    Dim myOrder = _
        <order>
            <item price="150">Motor</item>
            <item price="50">Cable</item>
            <item price="50">Modem</item>
            <item price="250">Monitor</item>
            <item price="10">Mouse</item>
        </order>
    Console.WriteLine(myOrder.Value)
End Sub

Result:
MotorCableModemMonitorMouse


Check if an element has attributes

Check if an element has attributes

Public Sub XLinq92()
    Dim doc = XDocument.Load(dataPath + "nw_customers.xml")
    Dim e = doc.<Root>.<Customers>(0)
    Console.WriteLine("Customers has attributes? {0}", e.HasAttributes)
End Sub

Result:
Customers has attributes? True


Check if an element has element children

Check if an element has element children

Public Sub XLinq93()
    Dim doc = XDocument.Load(dataPath + "nw_customers.xml")
    Dim e = doc.<Root>.<Customers>(0)
    Console.WriteLine("Customers has elements? {0}", e.HasElements)
End Sub

Result:
Customers has elements? True


Check if an element is empty

Check if an element is empty

Public Sub XLinq94()
    Dim doc = XDocument.Load(dataPath + "nw_customers.xml")
    Dim e = doc.<Root>.<Customers>(0)
    Console.WriteLine("Customers element is empty? {0}", e.IsEmpty)
End Sub

Result:
Customers element is empty? False


Get the name of an element

Get the name of an element

Public Sub XLinq95()
    Dim doc = XDocument.Load(dataPath + "nw_customers.xml")
    Dim e = doc.Elements()(0)
    Console.WriteLine("Name of element {0}", e.Name)
End Sub

Result:
Name of element Root


Get the name of an attribute

Get the name of an attribute

Public Sub XLinq96()
    Dim doc = XDocument.Load(dataPath + "nw_customers.xml")
    Dim a = doc.<Root>.<Customers>.Attributes()(0)
    Console.WriteLine("Name of attribute {0}", a.Name)
End Sub

Result:
Name of attribute CustomerID


Get the XML declaration

Get the XML declaration

Public Sub XLinq97()
    Dim doc = XDocument.Load(dataPath + "config.xml")
    Console.WriteLine("Version {0}", doc.Declaration.Version)
    Console.WriteLine("Encoding {0}", doc.Declaration.Encoding)
    Console.WriteLine("Standalone {0}", doc.Declaration.Standalone)
End Sub

Result:
Version 1.0
Encoding UTF-8
Standalone


Find the type of the node

Find the type of the node

Public Sub XLinq98()
    Dim o = <foo/>
    Console.WriteLine(o.NodeType.ToString)
End Sub

Result:
Element


Verify phone numbers

Verify that the phone numbers of the format xxx-xxx-xxxx

Public Sub XLinq99()
    Dim doc = XDocument.Load(dataPath + "nw_customers.xml")
    Dim query1 = _
        From customer In doc...<Customers> _
        Select <customer CustomerID=<%= customer.@CustomerID %>>
                   <%= customer...<Phone>(0) %>
                   <%= CheckPhone(customer...<Phone>.Value) %>
               </customer>
    For Each result In query1
        Console.WriteLine(result)
    Next
End Sub

' Sub CheckPhone code not found

Result:
<customer CustomerID="ALFKI">
  <Phone>030-0074321</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="ANATR">
  <Phone>(5) 555-4729</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="ANTON">
  <Phone>(5) 555-3932</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="AROUT">
  <Phone>(171) 555-7788</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="BERGS">
  <Phone>0921-12 34 65</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="BLAUS">
  <Phone>0621-08460</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="BLONP">
  <Phone>88.60.15.31</Phone>
  <isValidPhone>false</isValidPhone>
</customer>
<customer CustomerID="BOLID">
  <Phone>(91) 555 22 82</Phone>
  <isValidPhone>false</isValidPhone>
</customer>
<customer CustomerID="BONAP">
  <Phone>91.24.45.40</Phone>
  <isValidPhone>false</isValidPhone>
</customer>
<customer CustomerID="BOTTM">
  <Phone>(604) 555-4729</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="BSBEV">
  <Phone>(171) 555-1212</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="CACTU">
  <Phone>(1) 135-5555</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="CENTC">
  <Phone>(5) 555-3392</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="CHOPS">
  <Phone>0452-076545</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="COMMI">
  <Phone>(11) 555-7647</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="CONSH">
  <Phone>(171) 555-2282</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="DRACD">
  <Phone>0241-039123</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="DUMON">
  <Phone>40.67.88.88</Phone>
  <isValidPhone>false</isValidPhone>
</customer>
<customer CustomerID="EASTC">
  <Phone>(171) 555-0297</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="ERNSH">
  <Phone>7675-3425</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="FAMIA">
  <Phone>(11) 555-9857</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="FISSA">
  <Phone>(91) 555 94 44</Phone>
  <isValidPhone>false</isValidPhone>
</customer>
<customer CustomerID="FOLIG">
  <Phone>20.16.10.16</Phone>
  <isValidPhone>false</isValidPhone>
</customer>
<customer CustomerID="FOLKO">
  <Phone>0695-34 67 21</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="FRANK">
  <Phone>089-0877310</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="FRANR">
  <Phone>40.32.21.21</Phone>
  <isValidPhone>false</isValidPhone>
</customer>
<customer CustomerID="FRANS">
  <Phone>011-4988260</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="FURIB">
  <Phone>(1) 354-2534</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="GALED">
  <Phone>(93) 203 4560</Phone>
  <isValidPhone>false</isValidPhone>
</customer>
<customer CustomerID="GODOS">
  <Phone>(95) 555 82 82</Phone>
  <isValidPhone>false</isValidPhone>
</customer>
<customer CustomerID="GOURL">
  <Phone>(11) 555-9482</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="GREAL">
  <Phone>(503) 555-7555</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="GROSR">
  <Phone>(2) 283-2951</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="HANAR">
  <Phone>(21) 555-0091</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="HILAA">
  <Phone>(5) 555-1340</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="HUNGC">
  <Phone>(503) 555-6874</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="HUNGO">
  <Phone>2967 542</Phone>
  <isValidPhone>false</isValidPhone>
</customer>
<customer CustomerID="ISLAT">
  <Phone>(198) 555-8888</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="KOENE">
  <Phone>0555-09876</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="LACOR">
  <Phone>30.59.84.10</Phone>
  <isValidPhone>false</isValidPhone>
</customer>
<customer CustomerID="LAMAI">
  <Phone>61.77.61.10</Phone>
  <isValidPhone>false</isValidPhone>
</customer>
<customer CustomerID="LAUGB">
  <Phone>(604) 555-3392</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="LAZYK">
  <Phone>(509) 555-7969</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="LEHMS">
  <Phone>069-0245984</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="LETSS">
  <Phone>(415) 555-5938</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="LILAS">
  <Phone>(9) 331-6954</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="LINOD">
  <Phone>(8) 34-56-12</Phone>
  <isValidPhone>false</isValidPhone>
</customer>
<customer CustomerID="LONEP">
  <Phone>(503) 555-9573</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="MAGAA">
  <Phone>035-640230</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="MAISD">
  <Phone>(02) 201 24 67</Phone>
  <isValidPhone>false</isValidPhone>
</customer>
<customer CustomerID="MEREP">
  <Phone>(514) 555-8054</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="MORGK">
  <Phone>0342-023176</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="NORTS">
  <Phone>(171) 555-7733</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="OCEAN">
  <Phone>(1) 135-5333</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="OLDWO">
  <Phone>(907) 555-7584</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="OTTIK">
  <Phone>0221-0644327</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="PARIS">
  <Phone>(1) 42.34.22.66</Phone>
  <isValidPhone>false</isValidPhone>
</customer>
<customer CustomerID="PERIC">
  <Phone>(5) 552-3745</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="PICCO">
  <Phone>6562-9722</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="PRINI">
  <Phone>(1) 356-5634</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="QUEDE">
  <Phone>(21) 555-4252</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="QUEEN">
  <Phone>(11) 555-1189</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="QUICK">
  <Phone>0372-035188</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="RANCH">
  <Phone>(1) 123-5555</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="RATTC">
  <Phone>(505) 555-5939</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="REGGC">
  <Phone>0522-556721</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="RICAR">
  <Phone>(21) 555-3412</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="RICSU">
  <Phone>0897-034214</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="ROMEY">
  <Phone>(91) 745 6200</Phone>
  <isValidPhone>false</isValidPhone>
</customer>
<customer CustomerID="SANTG">
  <Phone>07-98 92 35</Phone>
  <isValidPhone>false</isValidPhone>
</customer>
<customer CustomerID="SAVEA">
  <Phone>(208) 555-8097</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="SEVES">
  <Phone>(171) 555-1717</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="SIMOB">
  <Phone>31 12 34 56</Phone>
  <isValidPhone>false</isValidPhone>
</customer>
<customer CustomerID="SPECD">
  <Phone>(1) 47.55.60.10</Phone>
  <isValidPhone>false</isValidPhone>
</customer>
<customer CustomerID="SPLIR">
  <Phone>(307) 555-4680</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="SUPRD">
  <Phone>(071) 23 67 22 20</Phone>
  <isValidPhone>false</isValidPhone>
</customer>
<customer CustomerID="THEBI">
  <Phone>(503) 555-3612</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="THECR">
  <Phone>(406) 555-5834</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="TOMSP">
  <Phone>0251-031259</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="TORTU">
  <Phone>(5) 555-2933</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="TRADH">
  <Phone>(11) 555-2167</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="TRAIH">
  <Phone>(206) 555-8257</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="VAFFE">
  <Phone>86 21 32 43</Phone>
  <isValidPhone>false</isValidPhone>
</customer>
<customer CustomerID="VICTE">
  <Phone>78.32.54.86</Phone>
  <isValidPhone>false</isValidPhone>
</customer>
<customer CustomerID="VINET">
  <Phone>26.47.15.10</Phone>
  <isValidPhone>false</isValidPhone>
</customer>
<customer CustomerID="WANDK">
  <Phone>0711-020361</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="WARTH">
  <Phone>981-443655</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="WELLI">
  <Phone>(14) 555-8122</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="WHITC">
  <Phone>(206) 555-4112</Phone>
  <isValidPhone>true</isValidPhone>
</customer>
<customer CustomerID="WILMK">
  <Phone>90-224 8858</Phone>
  <isValidPhone>false</isValidPhone>
</customer>
<customer CustomerID="WOLZA">
  <Phone>(26) 642-7012</Phone>
  <isValidPhone>true</isValidPhone>
</customer>


Quick validation

Validate file structure

Public Sub XLinq100()
    Dim doc = XDocument.Load(dataPath + "nw_customers.xml")
    For Each customer In doc...<Customers>
        Dim e = VerifyCustomer(customer)
        If e <> "" Then
            Console.WriteLine("Customer {0} is invalid. Missing {1}", _
                                customer.@CustomerID, e)
        End If
    Next
End Sub

' Sub VerifyCustomer code not found

Result:
Customer ANTON is invalid. Missing Fax
Customer BSBEV is invalid. Missing Fax
Customer CHOPS is invalid. Missing Fax
Customer COMMI is invalid. Missing Fax
Customer FAMIA is invalid. Missing Fax
Customer FOLKO is invalid. Missing Fax
Customer GODOS is invalid. Missing Fax
Customer GOURL is invalid. Missing Fax
Customer GREAL is invalid. Missing Fax
Customer ISLAT is invalid. Missing Fax
Customer KOENE is invalid. Missing Fax
Customer LETSS is invalid. Missing Fax
Customer MORGK is invalid. Missing Fax
Customer PRINI is invalid. Missing Fax
Customer QUEEN is invalid. Missing Fax
Customer QUICK is invalid. Missing Fax
Customer RICAR is invalid. Missing Fax
Customer RICSU is invalid. Missing Fax
Customer SAVEA is invalid. Missing Fax
Customer THEBI is invalid. Missing Fax
Customer TORTU is invalid. Missing Fax
Customer WELLI is invalid. Missing Fax


Aggregate functions

Calculate sum, average, min, max of freight of all orders

Public Sub XLinq101()
    Dim doc = XDocument.Load(dataPath + "nw_orders.xml")
    Dim result = From myOrder In doc...<Orders> _
        Where myOrder.<CustomerID>(0).Value = "VINET" And myOrder.<ShipInfo>.<Freight>.Any() _
        Select CDbl(myOrder.<ShipInfo>.<Freight>(0))

    Dim sum1 = result.Sum()
    Dim average1 = result.Average()
    Dim min1 = result.Min()
    Dim max1 = result.Max()
    Console.WriteLine("Sum: {0}, Average: {1}, Min: {2}, Max: {3}", sum1, average1, min1, max1)
End Sub

Result:
Sum: 58.41, Average: 11.682, Min: 1.15, Max: 32.38