Zum Inhalt springen

XML-Reaer Data.DataSet, Nur ein Table pro Dukument?


Empfohlene Beiträge

Geschrieben (bearbeitet)

Hallo Leute,

ich habe eine XML, die in verschiedenen Elementen immer ein Unterelement namens <TAG> hat.

Nun habe ich folgendes gefunden....

Quelle: Einlesen von XML in ein DataSet: Codebeispiel für Visual Basic .NET (VB.NET) und CSharp (C#)

.....Allerdings darf es nicht zwei gleichnamige Elemente an verschiedenen Stellen im XML-Dokument geben; z.B. darf <Name> nicht Unterelement von <Person> sein und an anderer Stelle im Dokument Unterelement von <Firma>. Die Elementnamen müssen also im gesamten Dokument eindeutig sein.

Was auch dem Verhalten entspricht, wenn ich die XML versuche in eine DataSet zu lesen (es geht nicht, ich erhalten einen eigenen Table für "tag" ohne zu wissen, ob "read" oder "write").

Kennt jemand von euch einen anderen Weg, wie man so etwas bewerkstelligen kann - außer: Die XML selbst zu parsen?

Die Struktur sieht so aus. Und ich möchte nun aus "read" und write alle "tag" auslesen. Zugehörig zu ihrem übergeordneten Element. Mit DataSet geht das leider so nicht.


<xml ......

<config .....>

    <read>

        <tag name..../>

        <tag name..../>

    </read>

    <write>

        <tag name..../>

        <tag name..../>

    </write>    

</config>

vG Henrik

Bearbeitet von raiserle
erweitert
Geschrieben

In welcher Form brauchst Du denn die Daten? Hast Du Einfluss auf die Struktur des XMLs? Wenn ja, schau Dir mal XmlSerializer an (Namespace: System.Xml.Serialization). Damit kannst Du eigene generische Klassen, die auch Listen oder Arrays enthalten dürfen, einfach serialisieren und deserialisieren.

Geschrieben

Danke für den Tipp.

Also Einfluss auf die XML-Struktur habe ich nicht.

Aber es geht auch ohne :D.

System.Xml.Serialization ist genau das richtige gewesen.

Für diejenigen, die auch mal so etwas machen müssen/wollen.

Diese XML soll gelesen werden - und es SOLL 2 Listen geben (read,write) die jeweils den Type Tag enthalten.


<?xml version="1.0" encoding="utf-8" ?>

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="core_schema.xsd">

  <read>

    <tag name="TESTVAR1" interval="1000" description="zum testen" />

    <tag name="TESTVAR2" interval="1000" />

    <tag name="TESTVAR3" interval="1000" />

  </read>

  <write>

    <tag name="TESTVAR1" description="zum testen"/>

  </write>

</config>

Also der Code in VB!

Sub Main()

  Dim xmlClassStructure_to_deserialize As New System.Xml.Serialization.XmlSerializer(GetType(Config))

  Dim xml_stream As New System.IO.StreamReader("tags.xml")

  Dim config As Config

  config = xmlClassStructure_to_deserialize.Deserialize(xml_stream)

  xml_stream.Close()

End Sub



'die benötigten klassen (strukturen )

<System.Xml.Serialization.XmlRoot("config")>

Class Config

  <System.Xml.Serialization.XmlArrayItem("tag")>

  Public read() As Tag


  <System.Xml.Serialization.XmlArrayItem("tag")>

  Public write() As Tag

End Class


Class Tag

  <System.Xml.Serialization.XmlAttribute("name")>

  Public Property name As String


  <System.Xml.Serialization.XmlAttribute("interval")>

  Public Property interval As UInt32


  <System.Xml.Serialization.XmlAttribute("description")>

  Public Property desc As String

End Class

[/code]

Nochmal danke für den Tipp! Funktioniert super und ist genau dass - was ich brauche.

vG Henrik

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...