|
Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
XML literals, die een gelijkaardige syntax hebben als XML 1.0, staan ons toe inline ( in de code ) XML op te bouwen. Deze XML wordt gerepresenteerd door "LINQ to XML" objecten. Dit maakt het makkelijk omdat de XML in onze code dezelfde structuur heeft als de ontvangen of uiteindelijk opgeleverde XML.
LINQ to XML is een eenvoudig object model voor het creëren en manipuleren van XML, het raadplegen van deze XML kan dan via LINQ queries gebeuren. 28.1.1. XElementEen XML literal levert een System.Xml.Linq.XElement op : Visual Basic 2010 Broncode Option Explicit OnOption Strict OnImports System.Xml.Linq Namespace CreatingXML Class XMLLitaralDirectlyInCodeXElementExample Public Shared Sub Main() Dim employee1 As XElement = <employee> <name>John Smith</name> <departement>Sales</departement> </employee> Console.WriteLine(employee1.ToString()) Console.ReadLine() End Sub End ClassEnd NamespaceDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
Console Application Output <employee>
<name>John Smith</name>
<departement>Sales</departement>
</employee>Bemerkt hoe de XML in onze code en output XML gelijk zijn.
Bemerk ook hoe het line continuation character ( _ ) hier niet noodzakelijk is om de XML literal expressie over verschillende regels te spreiden, dit helpt uiteraard de leesbaarheid van deze literals te verhogen. Verderop zullen we zien hoe in multiline embedded XML expressies toch line continuation characters nodig zijn. boven
28.1.2. XDocumentEen XML document kan je creëren door de XML literal te starten met <?xml version="1.0"?>, deze XML literal levert dan een System.Xml.Linq.XDocument op : Visual Basic 2010 Broncode Namespace CreatingXML Class XDocumentExample Public Shared Sub Main() Dim employeesDocument As XDocument = _ <?xml version= "1.0"?> <employees> <employee> <name>John Smith</name> <departement>Sales</departement> </employee> <employee> <name>Jane Jones</name> <departement>Distribution</departement> </employee> </employees> Console.WriteLine(employeesDocument.ToString()) Console.ReadLine() End Sub End ClassEnd NamespaceDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
Console Application Output <employees>
<employee>
<name>John Smith</name>
<departement>Sales</departement>
</employee>
<employee>
<name>Jane Jones</name>
<departement>Distribution</departement>
</employee>
</employees> boven
28.1.3. LINQ to XML Object ModelDe Visual Basic compiler vertaalt XML literals naar LINQ to XML objecten : Private employeeDocument As XDocument = _ <?xml version="1.0" encoding="UTF-8"?> <employee><!-- an employee --> <name>John Smith</name> <departement type="Sales">London</departement> </employee> Het XDocument object uit bovenstaand literal zal bestaan uit verschillende XElement objecten voor de nodes employee, name en departement. Deze XElement objecten hebben steeds een XName object voor de naam van deze nodes. Het XDocument object heeft ook een XDeclaration object voor bijvoorbeeld de versie en encoding van XML. XElement voor employee zal een XComment hebben voor de commentaar node en het XElement voor departement zal dan een XAttribute object hebben voor het type attribuut. Enzovoort...
XDocument, XName, XElement, XDeclaration, XComment, XAttribute, ... zijn allen gedefinieerd in de namespace System.Xml.Linq.
Men zou dergelijk object model ook manueel kunnen opbouwen, door zelf expliciet al deze objecten te construeren en aan elkaar te koppelen, maar het spreekt voor zich dat dit de eenvoud en leesbaarheid van onze code niet zou bevorderen. boven
28.1.4. Opletten met White Spaces in XML LiteralsIn geval dat "white spaces" ( newlines, tabs, spaties, ... ) worden opgenomen op een significante plaats binnen de XML literal worden deze door de compiler geïntegreerd in de LINQ to XML objecten.
Zo zal in onderstaand voorbeeld de spatie binnen de waarde voor attribute1 en de newlines en spaties tussen <node2> en </node2> opgenomen worden. Visual Basic 2010 Broncode Namespace CreatingXML Class WhiteSpacesExample Public Shared Sub Main() Dim someElement As XElement = <node1 attribute1= " attributeValue"> <node2> elementValue </node2> </node1> Console.WriteLine(someElement.ToString()) Console.ReadLine() End Sub End ClassEnd NamespaceDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
Console Application Output <node1 attribute1=" attributeValue">
<node2>
elementValue
</node2>
</node1>Niet significante white spaces als de newlines en spaties tussen <node1> en <node2> en tussen </node2> en </node1>, die er enkel staan om de literal overzichtelijker te maken, worden door de compiler genegeerd.
Significante white spaces zijn degene binnen de attribuut waardes en degene in de tekstuele element waardes.
Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
|