Visual Basic 2012 Voorbeelden
   

visual basic 2012 broncode voorbeelden

Blijf op de hoogte van de recente aanpassingen op vbvoorbeelden!

Microsoft Visual Studio 2012Microsoft Developers Network - Visual BasicMicrosoft .NET Framework

29.1. Creatie van XML via XML Literals

Print Email Deel op Twitter Deel op Facebook

Dit artikel is gepubliceerd op maandag 15 oktober 2012 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.

29.1.1. XElement

Een XML literal levert een System.Xml.Linq.XElement op :
Visual Basic 2012 Broncode - Codevoorbeeld 741
Option Explicit On
Option Strict On

Imports 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 Class
End Namespace
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.

29.1.2. XDocument

Een 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 2012 Broncode - Codevoorbeeld 742
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 Class
End Namespace
Console Application Output
<employees>
  <employee>
    <name>John Smith</name>
    <departement>Sales</departement>
  </employee>
  <employee>
    <name>Jane Jones</name>
    <departement>Distribution</departement>
  </employee>
</employees>

29.1.3. LINQ to XML Object Model

De 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.
Type 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...

Types 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.

29.1.4. Opletten met White Spaces in XML Literals

In 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 2012 Broncode - Codevoorbeeld 743
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 Class
End Namespace
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 maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.