Announcement

Collapse
No announcement yet.

XML mit CDATA-Tags einlesen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • XML mit CDATA-Tags einlesen

    Hallo,

    ich hoffe ich finde einen VBA-Profi, der mir bei folgendem Problem helfen kann:

    Ich möchte in Access eine große XML-Datei (ca. 23MB) einlesen

    1.Hürde: Die Datei ist binär, trotzdem könnte ich sie mit LINE INPUT einlesen, bis:
    2.Hürde: Das XML-Schema enthält CDATA-Tags mit vielen binären Daten (die ich nicht benötige), einige Stellen setzen aber ein EOF....

    Wie kann ich eine solche XML-Datei trotzdem einlesen ?

    Von XML habe ich kaum Ahnung, aber ich wäre in der Lage die semantische Information mit einer eigenen Logik herauszulesen...

    Weiss jemand Rat ?

  • #2
    Wie kann eine XML-Datei binär sein? Üblicherweise enthält eine XML-Datei keine Binärzeichen (wenn, werden diese bsp. als Base64 abgelegt).
    Christian

    Comment


    • #3
      Hallo nahpetsM,

      wie liest Du die XML Datei den ein, über Read/Input oder nutzt Du Microsoft XML?
      Olaf Helper

      <Blog> <Xing>
      * cogito ergo sum * errare humanum est * quote erat demonstrandum *
      Wenn ich denke, ist das ein Fehler und das beweise ich täglich

      Comment


      • #4
        Originally posted by Christian Marquardt View Post
        Wie kann eine XML-Datei binär sein? Üblicherweise enthält eine XML-Datei keine Binärzeichen (wenn, werden diese bsp. als Base64 abgelegt).
        Nun, soweit ich gelernt habe, darf ein CDATA-Tag binäre Informationen (z.B.: 3D-Daten) enthalten.
        Wenn ich jedenfalls die Datei mit Ultra-Edit öffne, wird sie mit dem HEX-Viewer angezeigt und nicht als Text. Wenn ich auf Text umschalte kann ich alle Zeilen lesen, so wie ich sie mit LINE INPUT auch erhalte...

        Comment


        • #5
          Originally posted by O. Helper View Post
          Hallo nahpetsM,

          wie liest Du die XML Datei den ein, über Read/Input oder nutzt Du Microsoft XML?
          Da ich von XML keine Ahnung habe, und Excel schon sagt, daß die XML-Struktur fehlerhaft ist (was aber nicht sein kann, da diese Datei von einer Anwendung fehlerfrei verarbeitet wird), wage ich es nicht die XML-Functions zu nutzen. Ich hatte da mal probiert... aber gleich wieder aufgegeben, da ja die Struktur offensichtlich ungewöhnlich ist (Excel beschwert sich z.B. über die CDATA-Inhalte, obwohl laut XML-Definition CDATA-Inhalte ignoriert werden sollten...

          Also versuche ich Sie mit Line Input einzulesen... was natürlich Schwachsinn ist. Aber zur Not frisst der Teufel Fliegen...
          Zuletzt editiert von nahpetsM; 14.07.2009, 08:57.

          Comment


          • #6
            CDATA wird von Paser ignoriert. Vielleicht hab eich auch nur von binären Daten eine andere Vorstellung...
            Christian

            Comment


            • #7
              das hilft mir leider nicht weiter :-((

              Comment


              • #8
                Willst Du es nicht doch mal mit MS XML versuchen? Wenn es ein halbwegs gültiges XML Format ist, wird es schon klappen; Excel ist nun wahrlich keine Referenz und die App muss es auch verarbeiten können und ich glaube nicht, das die selbst alles parsen etc.

                Mini-Demo:
                [highlight=xml]<?xml version="1.0" encoding="utf-8"?>
                <Elem01 Attrib01="Attribute-Wert 01"
                Attrib02="Attribute-Wert 01">
                <![CDATA[Ich bin ein cdata BINARY]]>
                Ich bin ein PLAIN TEXT
                <Elem02 Attrib11="Attribute-Wert 11" />
                </Elem01>[/highlight]
                [highlight=VB]Public Sub ReadXml()
                Dim xmlDoc As New MSXML2.DOMDocument60
                Dim xmlNodePar As MSXML2.IXMLDOMNode
                Dim xmlNodeChl As MSXML2.IXMLDOMNode
                Dim xmlAttr As MSXML2.IXMLDOMAttribute

                xmlDoc.Load ("D:\temp\demo.xml")
                Debug.Print xmlDoc.validate.reason

                For Each xmlNodePar In xmlDoc.childNodes
                Debug.Print xmlNodePar.baseName & " " & xmlNodePar.nodeTypeString

                For Each xmlAttr In xmlNodePar.Attributes
                Debug.Print "--" & xmlAttr.Name & " " & xmlAttr.Value
                Next xmlAttr

                For Each xmlNodeChl In xmlNodePar.childNodes
                Debug.Print " " & xmlNodeChl.nodeName & " " & xmlNodeChl.nodeTypedValue

                If Not xmlNodeChl.Attributes Is Nothing Then
                For Each xmlAttr In xmlNodeChl.Attributes
                Debug.Print " --" & xmlAttr.Name & " " & xmlAttr.Value
                Next xmlAttr
                End If
                Next xmlNodeChl

                Next xmlNodePar

                Set xmlDoc = Nothing

                End Sub[/highlight]
                Ergebnis:
                [highlight=code]Der Knoten ist weder gültig noch ungültig, weil keine DTD/Schema-Deklaration gefunden wurde.

                xml processinginstruction
                --version 1.0
                --encoding utf-8
                Elem01 element
                --Attrib01 Attribute-Wert 01
                --Attrib02 Attribute-Wert 01
                #cdata-section Ich bin ein cdata BINARY
                #text
                Ich bin ein PLAIN TEXT

                Elem02
                --Attrib11 Attribute-Wert 11[/highlight]
                Olaf Helper

                <Blog> <Xing>
                * cogito ergo sum * errare humanum est * quote erat demonstrandum *
                Wenn ich denke, ist das ein Fehler und das beweise ich täglich

                Comment


                • #9
                  Hi O.Helper,

                  schau Dir mal die Datei an : http://s145937609.online.de/save_conv.zip

                  Wenn Du(jemand) es schaffst, Sie in Access einzulesen, wäre ich bereit eine Belohnung von 20 Euro zu zahlen !

                  Comment


                  • #10
                    Ok, das sieht zwar aus wie XML, ist aber kein gültiges XML Format; auch MSXML reklamiert da diverse ungültige Zeichen.
                    Auf dem Weg geht es also soweit schon mal nicht.
                    Olaf Helper

                    <Blog> <Xing>
                    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
                    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

                    Comment


                    • #11
                      http://entwickler-forum.de/showthread.php?t=56365
                      Christian

                      Comment


                      • #12
                        ok. Problem (selbst) gelöst .. in der Tat muss ich wohl oder übel erst 20-100MB im binary modus durchkauen, um die nicht ASCII-fähigen zeichen zu ersetzen... danach kann ich das XML ohne Probleme importieren ....

                        Comment

                        Working...
                        X