VBiB/ACCB.net - Visual Basic in België | .net Ineta User Group  
Hoofdmenu

Advertenties

Het Computer Winkeltje HCW


Evenementen

Forum

Plaats nieuw bericht   Plaats Reactie
Vorige onderwerp Printervriendelijke versie Log in om je privé berichten te bekijken Volgende onderwerp
Auteur Bericht
VicOffline
Onderwerp: XML Object Serialize  BerichtGeplaatst: 09 mrt 2010 - 19:29
In draf


Geregistreerd op: 11-mrt-2006
Berichten: 301

Status: Offline
Bij wijze van test, wil ik een verzameling objecten van het volgende class te serialiseren naar XML
Visual Basic code:
<XmlRootAttribute(ElementName:="Boek")> _
Public Class clsBook
    Public Name As String
    Public Description As String
    <XmlElementAttribute(ElementName:="Quantity")> _
    Public Qty As Integer
End Class

Voor de eenvoudigheid heb ik enkel public members en geen properties
Via volgende code maak ik de Xml file aan,
Visual Basic code:
        Dim LstBook As New List(Of clsBook)
        Dim b As New clsBook()
        b.Name = "Boek1"
        b.Description = "Boek Description 1"
        b.Qty = 5
        LstBook.Add(b)
        b = New clsBook
        b.Name = "Boek2"
        b.Description = "Product Description 2"
        b.Qty = 105
        LstBook.Add(b)
        'Serialize object to a text file.
        Dim objStreamWriter As New StreamWriter("D:\Test.Xml")
        Dim x As New XmlSerializer(LstBook.GetType)
        x.Serialize(objStreamWriter, LstBook)
        objStreamWriter.Close()

Dit levert volgende Xml file op,
Code:
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfClsBook xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <clsBook>
    <Name>Boek1</Name>
    <Description>Boek Description 1</Description>
    <Quantity>5</Quantity>
  </clsBook>
  <clsBook>
    <Name>Boek2</Name>
    <Description>Product Description 2</Description>
    <Quantity>105</Quantity>
  </clsBook>
</ArrayOfClsBook>

Al hoewel dat dit werkt, zou ik graag ArrayOfClsBook en clsBook willen vervangen door een eigen aanduiding, maar kan daarvoor niet de nodige attribut vinden. Kan iemand me helpen?
Mocht er iemand zijn die vindt dat dit beter op een andere wijze kan of eenvoudiger kan mag die dat natuurlijk ook melden.

Mvg, Vic
 
 Bekijk gebruikers profiel Stuur privé bericht  
Reageer met quote Naar boven
doebiOffline
Onderwerp: Re: XML Object Serialize  BerichtGeplaatst: 09 mrt 2010 - 19:52
In draf


Geregistreerd op: 12-mrt-2006
Berichten: 331
Woonplaats: Diksmuide
Status: Offline
Voor het ArrayOfClsBook weet ik het zo niet, voor clsBook kan je misschien een eigen classe maken met de naam van keuze waarin
je de originele clsBook volledig overerft, ik weet we niet of die overerfbaar is.

Verder kan je de xml als tekstbestand behandelen en zo lijn voor lijn eruitfilteren wat je wil veranderen,
maar dat is waarschijnlijk je bedoeling niet, of toch ?

_________________
Verwacht het onverwachte
 
 Bekijk gebruikers profiel Stuur privé bericht Verstuur mail Bekijk de homepage  
Reageer met quote Naar boven
VicOffline
Onderwerp: Re: XML Object Serialize  BerichtGeplaatst: 10 mrt 2010 - 08:18
In draf


Geregistreerd op: 11-mrt-2006
Berichten: 301

Status: Offline
Thx voor de replay.
Voor wat betreft clsBook lukt dat met, zoals hierboven aangegeven met de attribuut <XlmRootAttribute> wel als je enkel 1 object serialiseert en dus geen List (Of) gebruikt. Dus direct dat ene object serialiseren. Nu ik zoek vandaag nog wel even verder. Echt zo belangrijk is dat nu voor deze toepassing ook weer niet hoor. Het was meer om het te weten hoe je zoiets kan oplossen.
De bedoeling is om op die wijze de state van een aantal objecten te kunnen opslaan om ze nadien door men programma terug te kunnen laten inlezen en om op dat moment terug te kunnen gebruiken.

Mvg, Vic
 
 Bekijk gebruikers profiel Stuur privé bericht  
Reageer met quote Naar boven
VozzieOffline
Onderwerp: Re: XML Object Serialize  BerichtGeplaatst: 10 mrt 2010 - 10:20
Moderator


Geregistreerd op: 11-mei-2009
Berichten: 937

Status: Offline
Hallo,

Quote:
De bedoeling is om op die wijze de state van een aantal objecten te kunnen opslaan om ze nadien door men programma terug te kunnen laten inlezen en om op dat moment terug te kunnen gebruiken.


Dan kan je ze toch gewoon terug serializen van xml naar objecten.

Visual Basic code:
Class TheClass
    Public i As Integer
End Class

Sub WriteXml()
    Dim writeList As New List(Of TheClass)
    For i As Integer = 0 To 4
        Dim tc As New TheClass
        tc.i = i
        writeList.Add(tc)
    Next

    Dim objStreamWriter As New IO.StreamWriter("C:\Test.Xml")
    Dim serializer As New XmlSerializer(GetType(List(Of TheClass)))
    serializer.Serialize(objStreamWriter, writeList)
    objStreamWriter.Close()
End Sub

Sub ReadXml()
    Dim objStreamReader As New IO.StreamReader("c:\test.xml")
    Dim serializer As New XmlSerializer(GetType(List(Of TheClass)))
    Dim readList As List(Of TheClass) = DirectCast(serializer.Deserialize(objStreamReader), List(Of TheClass))
    objStreamReader.Close()
    For Each tc As TheClass In readList
        MsgBox(tc.i)
    Next
End Sub


Groeten

_________________
con\con

Stappen, keuzes en herhaling combineren is programmeren.
 
 Bekijk gebruikers profiel Stuur privé bericht Bekijk de homepage  
Reageer met quote Naar boven
VicOffline
Onderwerp: Re: XML Object Serialize  BerichtGeplaatst: 10 mrt 2010 - 10:40
In draf


Geregistreerd op: 11-mrt-2006
Berichten: 301

Status: Offline
Ja dat is geen probleem hoor.
De vraag was enkel of je in het Xml document waar per default de Class namen vermeld worden, dus in bovenstand voorbeeld ArrayOfClsBook en clsBook of het mogelijk is daar andere namen te laten vermelden.

Mvg, Vic
 
 Bekijk gebruikers profiel Stuur privé bericht  
Reageer met quote Naar boven
VozzieOffline
Onderwerp: Re: XML Object Serialize  BerichtGeplaatst: 10 mrt 2010 - 10:49
Moderator


Geregistreerd op: 11-mei-2009
Berichten: 937

Status: Offline
Hallo,

Deze code
Visual Basic code:
Option Explicit On
Option Strict On

Imports System.Xml.Serialization

<Serializable(), XmlRoot(ElementName:="Boeken")> _
Public Class clsBooks
    <XmlElement(ElementName:="Boek")> _
    Public list As New List(Of clsBook)
End Class

Public Class clsBook
    Public Name As String
    Public Description As String
    <XmlElement(ElementName:="Quantity")> _
    Public Qty As Integer
End Class


Public Module Module1

    Sub Main()

        Dim books As New clsBooks
        For i As Integer = 1 To 3
            Dim book As New clsBook
            book.Name = "VB.Net part " & i.ToString()
            book.Description = "Learning vb.net"
            book.Qty = (4 - i) * 333
            books.list.Add(book)
        Next

        Dim objStreamWriter As New IO.StreamWriter("c:\Test.Xml")
        Dim x As New XmlSerializer(GetType(clsBooks))
        x.Serialize(objStreamWriter, books)
        objStreamWriter.Close()
    End Sub
End Module


Maakt deze xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<Boeken xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Boek>
    <Name>VB.Net part 1</Name>
    <Description>Learning vb.net</Description>
    <Quantity>999</Quantity>
  </Boek>
  <Boek>
    <Name>VB.Net part 2</Name>
    <Description>Learning vb.net</Description>
    <Quantity>666</Quantity>
  </Boek>
  <Boek>
    <Name>VB.Net part 3</Name>
    <Description>Learning vb.net</Description>
    <Quantity>333</Quantity>
  </Boek>
</Boeken>


Dus geen ArrayOf prefix...

Groeten

_________________
con\con

Stappen, keuzes en herhaling combineren is programmeren.
 
 Bekijk gebruikers profiel Stuur privé bericht Bekijk de homepage  
Reageer met quote Naar boven
Berichten van afgelopen:     
Ga naar:  
Tijden zijn in GMT + 1 uur
Plaats nieuw bericht   Plaats Reactie
Vorige onderwerp Printervriendelijke versie Log in om je privé berichten te bekijken Volgende onderwerp
PNphpBB2 © 2003-2007 
 

 
Postnuke - ADODB Database - PHP 4/5 - pnPhpBB2 - Hosting bij Openminds
Met dank aan Jürgen voor de jarenlange inzet van visualbasic.be (anno 21-12-2000)
vbib.be gestart op 1/03/06 (extra vanaf 1/09: vbnet.be en vbdotnet.be)
VBiB is gerelateerd met wintips.be

Nieuwsbrief RSS Feed: backend.php