homelinksBlijf op de hoogte van de recente aanpassingen op vbvoorbeelden!
Visual Basic 2010 Voorbeelden

visual basic 2010 broncode voorbeelden

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

28.16. XML in Bestand of Stream Bewaren

Print Email Deel op Facebook Deel op Twitter

Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.

De klassen XDocument en XElement beschikken over een Save method bruikbaar om de XML informatie naar een bestand of een stream ( System.IO.TextWriter of System.Xml.XmlTextWriter stream ) te verzenden.

28.16.1. System.Xml.XmlTextWriter en XDocument.WriteTo Method

In onderstaand voorbeeld wordt een XDocument geschreven naar een System.Xml.XmlTextWriter via de WriteTo method :
Visual Basic 2010 Broncode
Option Explicit On
Option Strict On

Imports System.Text
Imports System.IO
Imports System.Xml
Imports System.Xml.Linq

Namespace SavingXML
    Class SavingXDocumentToStreamExample1
        Public Shared Sub Main()
            Dim xmlTextWriter As XmlTextWriter = _
                                   New XmlTextWriter(fileName:="employee.xml", _
                                                     Encoding:=Encoding.UTF8)
            '
            Dim document As XDocument = <?xml version="1.0"?>
                                        <employee>
                                            <name>John Smith</name>
                                        </employee>
            document.WriteTo(XmlTextWriter)
            '
            xmlTextWriter.Close()
        End Sub
    End Class
End Namespace
In bestand employee.xml vinden we :
XML Instantie
<?xml version="1.0" encoding="utf-8"?><employee><name>John Smith</name></employee>
Bemerk dat de output geen niet significante white spaces meer bevat.

28.16.2. System.Xml.Formatting Enumeratie

We kunnen een leesbaarder geheel verkrijgen door in plaats van de default System.Xml.Formatting.None de Formatting property van de XmlTextWriter in te stellen op de System.Xml.Formatting.Indented enumeratiewaarde (1) :
Visual Basic 2010 Broncode
Namespace SavingXML
    Class SavingXDocumentToStreamExample2
        Public Shared Sub Main()
            Dim xmlTextWriter As XmlTextWriter = _
                                   New XmlTextWriter(fileName:="employee.xml", _
                                                     Encoding:=Encoding.UTF8)
            xmlTextWriter.Formatting = Formatting.Indented                 ' (1)
            '
            Dim document As XDocument = <?xml version="1.0"?>
                                        <employee>
                                            <name>John Smith</name>
                                        </employee>
            document.WriteTo(xmlTextWriter)
            '
            xmlTextWriter.Close()
        End Sub
    End Class
End Namespace
In bestand employee.xml vinden we :
XML Instantie
<?xml version="1.0" encoding="utf-8"?>
<employee>
  <name>John Smith</name>
</employee>

28.16.3. System.IO.TextWriter en XDocument.Save Method

Indien je geen XmlTextWriter gebruikt maar bijvoorbeeld een System.IO.TextWriter stream dan kan je aan de Save method van het XDocument object de enumeratiewaarde System.Xml.Linq.SaveOptions.None of System.Xml.Linq.SaveOptions.DisableFormatting doorgeven om het indenting gedrag te sturen.

By default wordt er indenting gebruikt ( None ), indien DisableFormatting wordt doorgegeven aan de Save method wordt er geen indenting gebruikt :
Visual Basic 2010 Broncode
Namespace SavingXML
    Class SavingXDocumentToStreamExample3
        Public Shared Sub Main()
            Dim textWriter As TextWriter = _
                                       New StreamWriter(Path:="employee.xml", _
                                                        append:=False, _
                                                        Encoding:=Encoding.UTF8)
            '
            Dim document As XDocument = <?xml version="1.0"?>
                                        <employee>
                                            <name>John Smith</name>
                                        </employee>
            document.Save(textWriter, SaveOptions.DisableFormatting)
            '
            textWriter.Close()
        End Sub
    End Class
End Namespace
In bestand employee.xml vinden we :
XML Instantie
<?xml version="1.0" encoding="utf-8"?><employee><name>John Smith</name></employee>

28.16.4. Zonder Expliciete Stream

In onze code kan het nog iets eenvoudiger, door meteen aan de Save method het filepath op te geven van het bestand waarin de XML informatie wordt gestockeerd :
Visual Basic 2010 Broncode
Namespace SavingXML
    Class SavingXDocumentToFileExample
        Public Shared Sub Main()
            Dim document As XDocument = <?xml version="1.0"?>
                                        <employee>
                                            <name>John Smith</name>
                                        </employee>
            document.Save("employee.xml")
        End Sub
    End Class
End Namespace
In bestand employee.xml vinden we :
XML Instantie
<?xml version="1.0" encoding="utf-8"?>
<employee>
  <name>John Smith</name>
</employee>
Bemerk dat hier indenting wordt gebruikt en UTF-8 encoding.

28.16.5. XElement Objecten naar Bestand of Stream

Als we een XElement object via de Save method naar een bestand of stream verzenden, dan wordt dit element als root element van een XML document geschreven :
Visual Basic 2010 Broncode
Namespace SavingXML
    Class SavingXElementToStreamExample
        Public Shared Sub Main()
            Dim xmlTextWriter As XmlTextWriter = _
                                   New XmlTextWriter(fileName:="employee.xml", _
                                                     Encoding:=Encoding.UTF8)
            xmlTextWriter.Formatting = Formatting.Indented
            '
            Dim element As XElement = <employee>
                                          <name>John Smith</name>
                                      </employee>
            element.Save(xmlTextWriter)
            '
            xmlTextWriter.Close()
        End Sub
    End Class
End Namespace
In bestand employee.xml vinden we :
XML Instantie
<?xml version="1.0" encoding="utf-8"?>
<employee>
  <name>John Smith</name>
</employee>
Of zonder expliciete stream :
Visual Basic 2010 Broncode
Namespace SavingXML
    Class SavingXElementToFileExample
        Public Shared Sub Main()
            Dim element As XElement = <employee>
                                          <name>John Smith</name>
                                      </employee>
            element.Save("employee.xml")
        End Sub
    End Class
End Namespace
In bestand employee.xml vinden we :
XML Instantie
<?xml version="1.0" encoding="utf-8"?>
<employee>
  <name>John Smith</name>
</employee>

Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.