xml Auslesen

  • WPF

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

    Hi,

    ich bin neu hier und habe mich bisher vorwiegend mit VBA und Datenbankprogrammierung beschäftigt. Seit einiger Zeit versuche ich mich auch an vb.net.
    Klappt schon ganz gut, obwohl es anfangs doch eine große Umstellung war.
    Jetzt komme ich aber an meine Grenzen:

    Ich bekomme folgende xml-Datei:
    <?xml version="1.0" encoding="UTF-8"?>
    <record xmlns="http://www.loc.gov/MARC21/slim" type="Bibliographic">
    <leader>00000nam a22000008c 4500</leader>
    <controlfield tag="001">107981194X</controlfield>
    <controlfield tag="003">DE-101</controlfield>
    <controlfield tag="005">20160224220957.0</controlfield>
    <controlfield tag="007">tu</controlfield>
    <controlfield tag="008">151207s2016 gw ||||| |||| 00||||ger </controlfield>
    <datafield tag="015" ind1=" " ind2=" ">
    <subfield code="a">15,N51</subfield>
    <subfield code="2">dnb</subfield>
    </datafield>
    <datafield tag="016" ind1="7" ind2=" ">
    <subfield code="2">DE-101</subfield>
    <subfield code="a">107981194X</subfield>
    </datafield>
    <datafield tag="020" ind1=" " ind2=" ">
    <subfield code="a">9783645604703</subfield>
    <subfield code="c">: EUR 41.20 (AT), EUR 40.00 (DE)</subfield>
    <subfield code="9">978-3-645-60470-3</subfield>
    </datafield>
    ... usw.
    </record>
    Die einzelnen datafields/subfields sollen ausgewertet und in eine bestehende DB eingefügt werden (wenn datafield tag = "xyz", dann speichere subfield x, y, z) . Soweit so gut. Mit String-Operationen und RegEx wäre das machbar aber m.E. viel zu umständlich.

    Ich habe es jetzt mit Web-Operationen wie GetElementsByTagName u.ä. aber auch mit XMLDokument bzw. XDocument versucht, scheitere aber immer an der Verschachtelung des XML-Textes.
    Ich muss hinzufügen, das XML-Verarbeitung für mich völliges Neuland ist.
    Im Forum habe ich schon die verschiedensten Ansätze gefunden und ausprobiert, aber bisher ohne rechten Erfolg.
    Was mir fehlt ist der richtige Ansatz. Ich hoffe, irgend jemand kann mir da auf die Sprünge helfen :)

    Peter
    Huhu,

    ich verwende für XML immer dieses: msdn.microsoft.com/de-de/library/bb979298.aspx
    (MSDN Link zur ReaderClass: msdn.microsoft.com/en-us/libra…textreader(v=vs.110).aspx )
    Dort hast du auch GetAttribute für die Tags und kannst diese vergleichen usw.
    Recht einfach zu verstehen ist ja alles kommentiert und kannst natürlich auch vergleichen zwischendrin und anpassen wie du möchtest.

    Am besten einfach mal anfangen und wenn es dann irgendwo hängen sollte poste einfach mal deinen Code mit Fehlermeldung oder was genau nicht funktioniert und aber anders funktionieren soll.

    Greetz
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen

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

    xChRoNiKx

    ....diesen Link habe ich auch schon genutzt. Hilft aber nicht wirklich. Problem ist (für mich) die Zuordnung des Textes ( Knoten) zum Element (Knoten).




    hal2000
    Das habe ich auch schon angedacht. Das Schema lässt sich ja mit Visual Studio ermitteln (habe ich jedenfalls so verstanden).
    Habe ich gemacht, komme da aber nicht weiter, da mir die Hintergründe fehlen. Hast du dazu evt einen weiterführenden Link?
    K

    Peter
    Das Schema bekommst du üblicherweise neben den Daten mitgeliefert, oder es ist in der Nähe der Datenquelle zu finden. Ich habe mal recherchiert - in diesem Fall gibts das Schema hier: loc.gov/standards/marcxml/ - die Datei ist loc.gov/standards/marcxml/schema/MARC21slim.xsd.

    Verwende xsd.exe <Schema> /c /l:VB zum Generieren der Klassen.
    Gruß
    hal2000
    hal2000, danke für den link (kannte ich noch nicht).

    Habe das jetzt soweit durchgeführt und die Klassen generiert. Was mir aber fehlt: Wie komme ich jetzt zu einem DataSet?? Ich hatte angenommen, dass dies automatisch generiert wird - war wohl eine falsche Annahme.

    Gruß
    Peter