Ankündigung

Einklappen
Keine Ankündigung bisher.

HTML Zeichen in einem bestehendem XML Dokument umwandeln

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • HTML Zeichen in einem bestehendem XML Dokument umwandeln

    Hi

    Ich schreibe gerade einen Blogger import und lese zurzeit mit simplexml das xml dokument aus. problem an der ganzen sache sind aber die html tags zwischen den xml tags. simplexml kann da nicht unterscheiden und trennt mir den text an htmltags wie <div> oder <span>.
    jetzt denke ich darüber nach die htmlspezifischen zeichen vorher umzuwandelt und nach dem auslesen wieder in htmltags zu wandeln ...

    bloss wie kann ich das anstellen?
    oder hat jemand gerade einen brauchbaren xmlparser zur hand?

  • #2
    Das Zeichen "<" in "&lt;" umwandeln. Bzw. sollte es im resultierenden XML so umgewandelt sein. Vorher jedes "&" ind "&aml;" umwandeln, auch wenns merkwürdig ausschaut. Jeder vernünftige XML-Parser sollte das dann richtig verstehen.

    Kommentar


    • #3
      Fred verschoben. Problem ist doch nicht so schwierig
      Gelöst?

      Kommentar


      • #4
        wenn ich solche umwandlungen in der gesamten datei anwende sind natürlich auch alle xml tags hin ...

        so sieht das zu lesende aus:

        <article>
        <item id="1">
        <title>blah</title>
        <text>blub</text>
        </item>
        <item id="1">
        <title>blah2</title>
        <text>so siehts aus</text>
        </item>

        und hier will ich das [b] in &lt;b&gt; haben ...

        simplexml mach daraus aber ein eigenes objekt.

        jetzt schlage ich mich gerade mit sax rum ...

        insgesamt haber ich inzwischen schon 5 oder 6 verschiedene xmlparser geteste, aber alle parsen mir das falsch.

        -> http://www.media-palette.de/tools/xml-line/
        -> http://www.engageinteractive.com/mam...6&Itemid=25279

        und selbst domit (der 2.) machts falsch ...

        Kommentar


        • #5
          Zitat von vandango
          insgesamt haber ich inzwischen schon 5 oder 6 verschiedene xmlparser geteste, aber alle parsen mir das falsch.
          Falsch. Die parsen alle richtig, du hast die Datei falsch befüllt, denn XML ist XML, das juckt sich nicht an Inhalten. Das Zeichen "<" beginnt ein Tag bzw. Objekt. Punkt aus. Kannst du nicht dort ansetzen, wo die Datei erstellt wird?

          Kommentar


          • #6
            testet doch einfach mal die url slackblog.de mit http://www.engageinteractive.com/dom...ting_domit.php und lasst es euch als array ausgeben. die unterschiede werden sichtbar sobald ihr euch das ganze als string anseht. domit trennt den großen text in mehrere kleine ... das soll aber ein großer sein

            Kommentar


            • #7
              wenn blogger.com die datei erstellt, kann ich das nicht. ich werd mir wohl ein html strip parser schreiben müssen ...

              Kommentar


              • #8
                oder dem Autor einen Bug übermitteln müssen

                Wenn blogger die Datei erstellt aber die Tags nicht korrekt für XML umsetzt, dann darf sich das nicht XML-Datei nennen, was generiert wird.

                Kommentar


                • #9
                  das ist in etwa die xml datei:

                  - <x>
                  - <blog>
                  - <post>
                  <ItemAuthor>vandango</ItemAuthor>
                  <ItemTitle>Testalbum</ItemTitle>
                  <ItemDateTime>2/15/2006 12:05:00 AM</ItemDateTime>
                  - <ItemBody>
                  <div style="clear:both;" />
                  asdasdasd
                  <div style="clear:both; padding-bottom: 0.25em;" />
                  </ItemBody>
                  </post>
                  </blog>
                  - <blog>
                  - <post>
                  <ItemAuthor>vandango</ItemAuthor>
                  <ItemTitle>Nacht42 - Erste Erkenntnisse</ItemTitle>
                  <ItemDateTime>7/21/2005 03:36:00 PM</ItemDateTime>
                  - <ItemBody>
                  <div style="clear:both;" />


                  Die Nacht ist schon seltsam. Dunkel bricht sie über uns herein und verspricht Ruhe und Entspannung. Müde schleifen wir uns in unsere Betten und schlafen den Schlaf der Gerechten. Nachts reinigt sich die Erde, die Luft wird frisch, die Blätter bekommen Tau. Gleichzeitig schleicht sich aber auch ein gewisses Unbehagen ein. "Ist es wirklich Ruhig und friedlich?", "Was war das für ein Geräusch?", "War da eben ein Schatten?". Nachts passieren die seltsamsten Dinge. Wir hören Stimmen auf der Strasse während wir im Bett liegen, doch sehen können wir niemanden. Wir sehen Schatten in den Büschen, hinter Bäumen, zwischen Blättern - doch sehen können wir niemanden. Es gibt Nächte an denen wir Lichter am Himmel sehen. Manche denken dabei immer an die unendliche Weite die über uns liegt. Die Gedanken fangen dann an zu spielen und malen Bilder über phantastische Welten und merkwürdige unbekannte Wesen. Dann kommt immer die alte Frage: "Kann es Leben da draussen geben?".</p>
                  Knut
                  wälzt sich in seinem Bett und denk immer noch an die vergangenen Stunden. Wilde Gedanken und Phantasien spuken ihm im Kopf herum und er kommt einfach nicht zur Ruhe. Dauernd geht ihm dieser Traum durch den Kopf. 3 Jahre ist es her, damals, er war noch jung und arbeitete auf dem Feld seines Vaters
                  Pere
                  . In die Dampfmanufakturen wollte er immer, aber das verbot
                  Pere
                  ihm. "Werd was anständiges mein Sohn. Dieses neumodische Zeugs ist nicht gut, wird uns alle noch Probleme bringen." sage er immer. Eines Abends, er war noch länger auf dem Feld geblieben, begann die ganze Geschichte und damit seine Probleme. Es war ein schöner Abend. Kühle, frische Luft umsäuselte ihn, lies seine Haare und sein Hemd aufwirbeln. Blätter stoben vom Wind getrieben auf. Die Bäume raschelten und der Mond spiegelt sich im seichten Wasser des kleinen Bach's. Er saß mit geschlossenen Augen auf einer kleinen Bank inmitten dieser kleinen Nachtidylle und schnuppere die nächtliche Luft. Eine Zigarette rauchend und ein Bier trinken sah er zum ersten Mal in seinem Leben ein Sternschnuppenregen. In Büchern lass man davon, in der Schule wurde es einem erzählt, aber selbst gesehen hatte er es bisher nicht, nichtmal einer seiner vielen Freunden oder Verwandten. Dieses Ereigniss kam so selten in der Geschichte der Menschen vor, das man an eine Legende oder Sage denkt wenn man davon hört. Es kündigt, so sagt man, bestimmte Ereignisse an. Nicht die normalen wie die quarkenden Frösche im Januar oder das letzte Lied des
                  Snobbers
                  , nein, diese Ereignisse sind einmaliger Natur. Vor etwa 750 Jahren (man weiss es nicht mehr so genau, damals wurde das
                  Stauvvkraut
                  noch in großen Mengen angebaut und konsumiert und die Menschen waren mit anderen Dingen als dem schreiben beschäftigt) war es das letzte mal gewesen. Damals kamen dreieinhalb Jahre später die Herrscher aller 3 Reiche durch einen sich ähnelnden Unfall ums Leben und die Reiche fielen in einen 50 Jahre andauernden Bürgerkrieg. Nur durch den Mut von 3 jungen Bauern die im Krieg geboren wurden kamen die Reiche wieder zur Ruhe. Bis zum heutigen Tage werden sie von den Nachfahren dieser 3 jungen Burschen regiert. Es hatte allerdings auch etwas gutes - das
                  Stauvvkraut
                  wird seit dem nicht mehr in diesen Mengen angebaut, nein, es wurde sogar verboten. Nicht nur das, es wurden neue Gesetzt geschrieben die eine Schulpflicht für jeden Menschen (und natürlich Zwerg, Halbling und Ork) einführt.
                  <div style="clear:both; padding-bottom: 0.25em;" />
                  </ItemBody>
                  </post>
                  - <comment>
                  <CommentBody>es beginnt</CommentBody>
                  - <CommentAuthor>
                  vandango
                  </CommentAuthor>
                  <CommentDateTime>8:45 PM</CommentDateTime>
                  </comment>
                  - <comment>
                  <CommentBody>alles</CommentBody>
                  - <CommentAuthor>
                  vandango
                  </CommentAuthor>
                  <CommentDateTime>8:46 PM</CommentDateTime>
                  </comment>
                  - <comment>
                  - <CommentBody>
                  i thought your blog was cool and i think you may like this cool
                  Website.
                  now just
                  Click Here
                  </CommentBody>
                  - <CommentAuthor>
                  davidalexander6794
                  </CommentAuthor>
                  <CommentDateTime>7:47 PM</CommentDateTime>
                  </comment>
                  - <comment>
                  - <CommentBody>
                  I read over your blog, and i found it inquisitive, you may find
                  My Blog
                  interesting. So please
                  Click Here To Read My Blog




                  http://pennystockinvestment.blogspot.com
                  </CommentBody>
                  - <CommentAuthor>
                  lucybencon99728410
                  </CommentAuthor>
                  <CommentDateTime>5:32 AM</CommentDateTime>
                  </comment>
                  </blog>
                  </x>

                  Kommentar


                  • #10
                    Sieht so aus, als wenn Du den Text aus dem IE rauskopiert hast.
                    Also scheint's gültiges xml zu ein, sonst stünde da eine Fehlermeldung.

                    Was ist das eigentliche Ziel?

                    Kommentar


                    • #11
                      das ziel ist folgendes:
                      ich entwickle seit einiger zeit (1 1/2 jahren) an einem open-source cms und weblog tool (toendaCMS) und bin zurzeit dabei einen vernünftigen import zu schreiben der diverse schnittstellen kennt und in toendaCMS importieren kann.
                      ein openoffice.org 2.0 docbook xml import hab ich schon fertig. jetzt will ich halt von blogger importieren ...

                      Kommentar


                      • #12
                        Hallo "vandango".

                        Lies das Dingens doch einfach ein, lass dir mit DOMNode->removeChild() den ItemBody-Knoten rausschneiden (Funktion gibt den Knoten zurück). Wandle den in einen String, schneid vorne und hinten <ItemBodey> bzw. </ItemBody> raus, ersetze die Entitäten und setze einen neunen Knoten ItemBody mit dem entschärften String in den Baum.

                        Nicht schön aber müsste doch gehen - oder hab ich dein Problem falsch verstanden?

                        Basti

                        Kommentar


                        • #13
                          Hallo,

                          mach einfach ein Reg und ersetze mit preg_replace reinen HTML-Code durch
                          eine Ersatzbeschreibung, die Du bei der Ausgabe wieder rückgängig machst.

                          allerdings werden HTML-Tags in XML per XSLT umschrieben, die XML-Datei ist somit nicht valid. Hat auch keine doctype-Definition.

                          http://at.php.net/manual/de/function.preg-replace.php
                          da kann man auch arrays definieren

                          Kommentar


                          • #14
                            Zitat von Basti
                            Hallo "vandango".

                            Lies das Dingens doch einfach ein, lass dir mit DOMNode->removeChild() den ItemBody-Knoten rausschneiden (Funktion gibt den Knoten zurück). Wandle den in einen String, schneid vorne und hinten <ItemBodey> bzw. </ItemBody> raus, ersetze die Entitäten und setze einen neunen Knoten ItemBody mit dem entschärften String in den Baum.

                            Nicht schön aber müsste doch gehen - oder hab ich dein Problem falsch verstanden?

                            Basti
                            Wenns doch so schön wäre, aber bei einem CMS, was auch auf alten Systemen ohne DOMXML und ohne den DOM von PHP5 laufen sollte.

                            wäre DOM mit PHP5 verfügbar könnte man auch mit DOM->getElementById Tags finden und verändern, als alter JavaScript-Fan war ich ja total scharf auf die DOM aber Pustekuchen, noch zu neu und nicht überall verfügbar...
                            sicher stehen diese Funktionen im Konflikt mit den kostenpflichtigen features teuerer Pakete so einiger webhoster.

                            ansonsten kann er ja auch die invaliden HTML-Tags mit striptags(allowable_tags) entfernen, aber auch das aird bei nicht validem Code sehr schwierig.
                            Da hilft dann nur step-by-step-parsen, d.h. erst validieren, dann invalide Tags raus usw.

                            Kommentar


                            • #15
                              Zitat von aberchen
                              mach einfach ein Reg und ersetze mit preg_replace reinen HTML-Code durch
                              eine Ersatzbeschreibung, die Du bei der Ausgabe wieder rückgängig machst.
                              Er will doch einen Import basteln, also hat er doch garkeinen reinen HTML-Code.

                              allerdings werden HTML-Tags in XML per XSLT umschrieben, die XML-Datei ist somit nicht valid. Hat auch keine doctype-Definition.
                              Wer schreibt was um?

                              Ich hab gar nochmal die ursprüngliche Frage gelesen und glaub, ich hab vorher daneben geantwortet. Ich dachte, du willst das Format umwandeln, aber du scheinst ja einfach nur das HTML da rausziehen zu wollen, oder? Wo ist denn da dann dein Problem? Wenn das HTML XML ist, dann kannst du ja einfach alle Kinder von ItemBody auslesen und wenn nicht, oder wenn nicht, dann schneid eben vorher aus dem String via RegExp alles zwischen den äußersten <ItemBody> bzw. </ItemBody> aus verarbeite beide Teile getrennt.

                              Basti

                              Kommentar

                              Lädt...
                              X