LINQ To XML Samples - TransformOn This Page |
Generate html with a list of customers that is numbered
Public Sub XLinq77()
Dim doc = XDocument.Load(dataPath + "nw_customers.xml")
Dim header() As XElement = {<th>#</th>, _
<th>customer id</th>, _
<th>contact name</th>}
Dim rows = _
From customer In doc...<Customers> _
Select <tr><td><%= Increment() %></td><td><%= customer.@CustomerID %></td><td><%= customer.<ContactName>(0).Value %></td></tr>
Dim html = <html><body><table><%= header %><%= rows %></table></body></html>
Console.Write(html)
End Sub
Result:
<html>
<body>
<table>
<th>#</th>
<th>customer id</th>
<th>contact name</th>
<tr>
<td>1</td>
<td>ALFKI</td>
<td>Maria Anders</td>
</tr>
<tr>
<td>2</td>
<td>ANATR</td>
<td>Ana Trujillo</td>
</tr>
<tr>
<td>3</td>
<td>ANTON</td>
<td>Antonio Moreno</td>
</tr>
<tr>
<td>4</td>
<td>AROUT</td>
<td>Thomas Hardy</td>
</tr>
<tr>
<td>5</td>
<td>BERGS</td>
<td>Christina Berglund</td>
</tr>
<tr>
<td>6</td>
<td>BLAUS</td>
<td>Hanna Moos</td>
</tr>
<tr>
<td>7</td>
<td>BLONP</td>
<td>Frédérique Citeaux</td>
</tr>
<tr>
<td>8</td>
<td>BOLID</td>
<td>Martín Sommer</td>
</tr>
<tr>
<td>9</td>
<td>BONAP</td>
<td>Laurence Lebihan</td>
</tr>
<tr>
<td>10</td>
<td>BOTTM</td>
<td>Elizabeth Lincoln</td>
</tr>
<tr>
<td>11</td>
<td>BSBEV</td>
<td>Victoria Ashworth</td>
</tr>
<tr>
<td>12</td>
<td>CACTU</td>
<td>Patricio Simpson</td>
</tr>
<tr>
<td>13</td>
<td>CENTC</td>
<td>Francisco Chang</td>
</tr>
<tr>
<td>14</td>
<td>CHOPS</td>
<td>Yang Wang</td>
</tr>
<tr>
<td>15</td>
<td>COMMI</td>
<td>Pedro Afonso</td>
</tr>
<tr>
<td>16</td>
<td>CONSH</td>
<td>Elizabeth Brown</td>
</tr>
<tr>
<td>17</td>
<td>DRACD</td>
<td>Sven Ottlieb</td>
</tr>
<tr>
<td>18</td>
<td>DUMON</td>
<td>Janine Labrune</td>
</tr>
<tr>
<td>19</td>
<td>EASTC</td>
<td>Ann Devon</td>
</tr>
<tr>
<td>20</td>
<td>ERNSH</td>
<td>Roland Mendel</td>
</tr>
<tr>
<td>21</td>
<td>FAMIA</td>
<td>Aria Cruz</td>
</tr>
<tr>
<td>22</td>
<td>FISSA</td>
<td>Diego Roel</td>
</tr>
<tr>
<td>23</td>
<td>FOLIG</td>
<td>Martine Rancé</td>
</tr>
<tr>
<td>24</td>
<td>FOLKO</td>
<td>Maria Larsson</td>
</tr>
<tr>
<td>25</td>
<td>FRANK</td>
<td>Peter Franken</td>
</tr>
<tr>
<td>26</td>
<td>FRANR</td>
<td>Carine Schmitt</td>
</tr>
<tr>
<td>27</td>
<td>FRANS</td>
<td>Paolo Accorti</td>
</tr>
<tr>
<td>28</td>
<td>FURIB</td>
<td>Lino Rodriguez</td>
</tr>
<tr>
<td>29</td>
<td>GALED</td>
<td>Eduardo Saavedra</td>
</tr>
<tr>
<td>30</td>
<td>GODOS</td>
<td>José Pedro Freyre</td>
</tr>
<tr>
<td>31</td>
<td>GOURL</td>
<td>André Fonseca</td>
</tr>
<tr>
<td>32</td>
<td>GREAL</td>
<td>Howard Snyder</td>
</tr>
<tr>
<td>33</td>
<td>GROSR</td>
<td>Manuel Pereira</td>
</tr>
<tr>
<td>34</td>
<td>HANAR</td>
<td>Mario Pontes</td>
</tr>
<tr>
<td>35</td>
<td>HILAA</td>
<td>Carlos Hernández</td>
</tr>
<tr>
<td>36</td>
<td>HUNGC</td>
<td>Yoshi Latimer</td>
</tr>
<tr>
<td>37</td>
<td>HUNGO</td>
<td>Patricia McKenna</td>
</tr>
<tr>
<td>38</td>
<td>ISLAT</td>
<td>Helen Bennett</td>
</tr>
<tr>
<td>39</td>
<td>KOENE</td>
<td>Philip Cramer</td>
</tr>
<tr>
<td>40</td>
<td>LACOR</td>
<td>Daniel Tonini</td>
</tr>
<tr>
<td>41</td>
<td>LAMAI</td>
<td>Annette Roulet</td>
</tr>
<tr>
<td>42</td>
<td>LAUGB</td>
<td>Yoshi Tannamuri</td>
</tr>
<tr>
<td>43</td>
<td>LAZYK</td>
<td>John Steel</td>
</tr>
<tr>
<td>44</td>
<td>LEHMS</td>
<td>Renate Messner</td>
</tr>
<tr>
<td>45</td>
<td>LETSS</td>
<td>Jaime Yorres</td>
</tr>
<tr>
<td>46</td>
<td>LILAS</td>
<td>Carlos González</td>
</tr>
<tr>
<td>47</td>
<td>LINOD</td>
<td>Felipe Izquierdo</td>
</tr>
<tr>
<td>48</td>
<td>LONEP</td>
<td>Fran Wilson</td>
</tr>
<tr>
<td>49</td>
<td>MAGAA</td>
<td>Giovanni Rovelli</td>
</tr>
<tr>
<td>50</td>
<td>MAISD</td>
<td>Catherine Dewey</td>
</tr>
<tr>
<td>51</td>
<td>MEREP</td>
<td>Jean Fresnière</td>
</tr>
<tr>
<td>52</td>
<td>MORGK</td>
<td>Alexander Feuer</td>
</tr>
<tr>
<td>53</td>
<td>NORTS</td>
<td>Simon Crowther</td>
</tr>
<tr>
<td>54</td>
<td>OCEAN</td>
<td>Yvonne Moncada</td>
</tr>
<tr>
<td>55</td>
<td>OLDWO</td>
<td>Rene Phillips</td>
</tr>
<tr>
<td>56</td>
<td>OTTIK</td>
<td>Henriette Pfalzheim</td>
</tr>
<tr>
<td>57</td>
<td>PARIS</td>
<td>Marie Bertrand</td>
</tr>
<tr>
<td>58</td>
<td>PERIC</td>
<td>Guillermo Fernández</td>
</tr>
<tr>
<td>59</td>
<td>PICCO</td>
<td>Georg Pipps</td>
</tr>
<tr>
<td>60</td>
<td>PRINI</td>
<td>Isabel de Castro</td>
</tr>
<tr>
<td>61</td>
<td>QUEDE</td>
<td>Bernardo Batista</td>
</tr>
<tr>
<td>62</td>
<td>QUEEN</td>
<td>Lúcia Carvalho</td>
</tr>
<tr>
<td>63</td>
<td>QUICK</td>
<td>Horst Kloss</td>
</tr>
<tr>
<td>64</td>
<td>RANCH</td>
<td>Sergio Gutiérrez</td>
</tr>
<tr>
<td>65</td>
<td>RATTC</td>
<td>Paula Wilson</td>
</tr>
<tr>
<td>66</td>
<td>REGGC</td>
<td>Maurizio Moroni</td>
</tr>
<tr>
<td>67</td>
<td>RICAR</td>
<td>Janete Limeira</td>
</tr>
<tr>
<td>68</td>
<td>RICSU</td>
<td>Michael Holz</td>
</tr>
<tr>
<td>69</td>
<td>ROMEY</td>
<td>Alejandra Camino</td>
</tr>
<tr>
<td>70</td>
<td>SANTG</td>
<td>Jonas Bergulfsen</td>
</tr>
<tr>
<td>71</td>
<td>SAVEA</td>
<td>Jose Pavarotti</td>
</tr>
<tr>
<td>72</td>
<td>SEVES</td>
<td>Hari Kumar</td>
</tr>
<tr>
<td>73</td>
<td>SIMOB</td>
<td>Jytte Petersen</td>
</tr>
<tr>
<td>74</td>
<td>SPECD</td>
<td>Dominique Perrier</td>
</tr>
<tr>
<td>75</td>
<td>SPLIR</td>
<td>Art Braunschweiger</td>
</tr>
<tr>
<td>76</td>
<td>SUPRD</td>
<td>Pascale Cartrain</td>
</tr>
<tr>
<td>77</td>
<td>THEBI</td>
<td>Liz Nixon</td>
</tr>
<tr>
<td>78</td>
<td>THECR</td>
<td>Liu Wong</td>
</tr>
<tr>
<td>79</td>
<td>TOMSP</td>
<td>Karin Josephs</td>
</tr>
<tr>
<td>80</td>
<td>TORTU</td>
<td>Miguel Angel Paolino</td>
</tr>
<tr>
<td>81</td>
<td>TRADH</td>
<td>Anabela Domingues</td>
</tr>
<tr>
<td>82</td>
<td>TRAIH</td>
<td>Helvetius Nagy</td>
</tr>
<tr>
<td>83</td>
<td>VAFFE</td>
<td>Palle Ibsen</td>
</tr>
<tr>
<td>84</td>
<td>VICTE</td>
<td>Mary Saveley</td>
</tr>
<tr>
<td>85</td>
<td>VINET</td>
<td>Paul Henriot</td>
</tr>
<tr>
<td>86</td>
<td>WANDK</td>
<td>Rita Müller</td>
</tr>
<tr>
<td>87</td>
<td>WARTH</td>
<td>Pirkko Koskitalo</td>
</tr>
<tr>
<td>88</td>
<td>WELLI</td>
<td>Paula Parente</td>
</tr>
<tr>
<td>89</td>
<td>WHITC</td>
<td>Karl Jablonski</td>
</tr>
<tr>
<td>90</td>
<td>WILMK</td>
<td>Matti Karttunen</td>
</tr>
<tr>
<td>91</td>
<td>WOLZA</td>
<td>Zbyszek Piestrzeniewicz</td>
</tr>
</table>
</body>
</html>
Generate HTML tables of books by authors
Public Sub XLinq78()
Dim doc = XDocument.Load(dataPath + "bib.xml")
Dim content = From b In doc...<book> _
From a In b.<author> _
Group b By Key = a.<first>.Value & " " & a.<last>.Value Into authorGroup = Group _
Select <p><%= "Author: " & Key %><%= GetBooksTable(authorGroup) %></p>
Dim result = <html><body><%= content %></body></html>
Console.WriteLine(result)
End Sub
' Sub GetBooksTable code not found
Result:
<html>
<body>
<p>Author: W. Stevens<table><th>Title</th><th>Year</th><tr><td /><td>1994</td></tr><tr><td /><td>1992</td></tr></table></p>
<p>Author: Peter Golde<table><th>Title</th><th>Year</th><tr><td /><td>1992</td></tr><tr><td /><td>2003</td></tr></table></p>
<p>Author: Serge Abiteboul<table><th>Title</th><th>Year</th><tr><td /><td>2000</td></tr></table></p>
<p>Author: Peter Buneman<table><th>Title</th><th>Year</th><tr><td /><td>2000</td></tr></table></p>
<p>Author: Dan Suciu<table><th>Title</th><th>Year</th><tr><td /><td>2000</td></tr></table></p>
<p>Author: Anders Hejlsberg<table><th>Title</th><th>Year</th><tr><td /><td>1999</td></tr><tr><td /><td>2003</td></tr></table></p>
<p>Author: Scott Wiltamuth<table><th>Title</th><th>Year</th><tr><td /><td>2003</td></tr></table></p>
</body>
</html>