LINQ To XML Samples - MiscellaneousOn This Page |
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
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
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
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
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
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
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
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
Public Sub XLinq98()
Dim o = <foo/>
Console.WriteLine(o.NodeType.ToString)
End Sub
Result:
Element
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>
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
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