StringCollection XML Code bekommen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Matix Media.

    StringCollection XML Code bekommen

    Hallo Liebe Menschen,

    schon wieder habe ich eine kleine Frage (mann ich bin auch echt der Nervigste User :D), ich würde gerne den XML Code einer StringCollection bekommen.

    Ich weiß das eine StringCollection XML Basiert ist und so aussieht:

    Als Beispiel:
    In der StringCollection Enthalten:
    - C:\

    XML-Quellcode

    1. <?xml version="1.0" encoding="utf-16"?>
    2. <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    3. <string>C:\</string>
    4. </ArrayOfString>


    Kann mir jemand sagen wie ich diesen Code während der Laufzeit bekommen kann?
    Grüße, Matix
    Hallo

    Matix Media schrieb:

    Ich weiß das eine StringCollection XML Basiert ist

    Achja? OK...

    Matix Media schrieb:

    Kann mir jemand sagen wie ich diesen Code während der Laufzeit bekommen kann?

    Kannst du uns sagen warum du weder die Foresuche noch Google vewendest. Ich bin normalerweise nicht der Typ der solche Antworten gibt, wirklich nicht. Langsam fällst du aber in dieser Hinsicht echt auf.

    Gerade über dieses Thema gibt es hier im Forum haufenweise Threads. Das ist wirklich reine faultheit. Das muss ich nun mal echt loswerden.

    Grüße
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Ja, ich weiß das es ahufenweiße threads zu xml gibt, abeeeer:

    -Woher ich weiß das eine String Collection XML Basiert ist:
    Wenn man in den Settings einen stringCollection erstellt und man einen eitrag tätigt generiert Visual Studio Automatisch einen XML Code.

    -Was will ich:
    Ich weiß das es jede menge tutorials zu xmll gibt, ich habe damit auch schon gearbeitet, abeer,, ich dachte es gäbe eine driekte möglichkeit diesen XML Code von einer StrringCollection direkt zu Exportieren.
    Grüße, Matix
    Du weißt hoffentlich, das alles, was du in den Settings speicherst in XML serialisiert wird?

    StringCollection macht intern überhaupt gar nichts mit XML es wird nur beim Speichern in XML Serialisiert.
    Wäre auch absoluter Quark, wenn man ständig darauf warten müsste, bis das Ding das XML richtig aufgebaut hätte, wenn man etwas hinzufügt oder löscht.

    Falls du es überprüfen willst, schau in der ReferenceSource nach:
    referencesource.microsoft.com/…ction.cs,5c99881659fb7660

    StringCollection ist intern eigentlich eine ArrayList, in der halt ausschließlich Strings gespeichert werden. Ist vermutlich ein Überbleibsel aus der Zeit bevor es Generika gab, und damit List(Of T)

    Was du aber machen kannst, ist die StringCollection einmal durch den XmlSerializer jagen. Dann solltest du beinahe das gleiche XML wie in den Settings bekommen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „EaranMaleasi“ ()

    Hallo

    @EaranMaleasi hats ja im Grunde schon super erklärt.
    Im Grunde kannst du jede Klasse welche als Serialisierbar gekennzeichnet ist mit dem XMLSerializer serialisieren.

    Das geht auch super Easy und wie ich finde recht schnell und kann auch Generisch gestalltet werden.

    Zum Serialisieren z.b. so:

    VB.NET-Quellcode

    1. Public Sub Serialize(Of T)(path As String, instance As T)
    2. Dim dirName As String = IO.Path.GetDirectoryName(path)
    3. If Not Directory.Exists(dirName) Then
    4. Directory.CreateDirectory(dirName)
    5. End If
    6. Using fs As New FileStream(path, FileMode.OpenOrCreate)
    7. SaveToStream(fs, instance)
    8. End Using
    9. End Sub
    10. Public Sub SaveToStream(Of T)(s As Stream, o As T)
    11. Dim x As New Xml.Serialization.XmlSerializer(GetType(T))
    12. x.Serialize(s, o)
    13. End Sub


    Angewandt wird dies dann so:

    VB.NET-Quellcode

    1. Serialize(Of MyClass)(Environment.CurrentDirectory & "\Test.xml", MyClassInstance)


    Zum Deserialisieren:

    VB.NET-Quellcode

    1. Public Function DeSerialize(Of T)(path As String, defaultInstance As T) As T
    2. If Not File.Exists(path) Then
    3. Return defaultInstance
    4. End If
    5. Using fs As New FileStream(path, FileMode.OpenOrCreate)
    6. Return LoadFromStream(Of T)(fs)
    7. End Using
    8. End Function
    9. Public Function LoadFromStream(Of T)(s As Stream) As T
    10. Dim x As New Xml.Serialization.XmlSerializer(GetType(T))
    11. Dim res = CType(x.Deserialize(s), T)
    12. Return res
    13. End Function


    Anwendung:

    VB.NET-Quellcode

    1. Dim myClassInstance = DeSerialize(Of MyClass)(Environment.CurrentDirectory & "\Test.xml", New MyClass)

    So, nun solltest du alles haben was du benötigst.


    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Nein, ich werden eigenen Code nutzen, auch wenn es sich anbieten würde (Danke an @Nofear23m), ich finde es besser einen eigenen Code zu Ürogrammieren bei den ich selber den Kompletten überblick habe.
    Grüße, Matix