Ist es möglich, HTML-Inhalte in XML-Dokumente einzufügen?

77

Ich muss HTML-Inhalte in ein XML-Dokument einfügen. Ist dies möglich oder sollten HTML-Inhalte beispielsweise in BASE64 oder mit so etwas anderem codiert werden?

Neuling
quelle

Antworten:

138

Sie können HTML-Inhalte einfügen. Eine Möglichkeit besteht darin, es in BASE64 zu codieren, wie Sie bereits erwähnt haben.

Ein anderer könnte CDATATags verwenden.

Beispiel mit CDATA:

<xml>
    <title>Your HTML title</title>
    <htmlData><![CDATA[<html>
        <head>
            <script/>
        </head>
        <body>
        Your HTML's body
        </body>
        </html>
     ]]>
    </htmlData>
</xml>

Bitte beachten Sie:

CDATAs Eröffnungszeichenfolge: <![CDATA[

CDATAs abschließende Zeichenfolge: ]]>

Pablo Santa Cruz
quelle
7
+1 CDATA ist IMO viel besser, weil es die Dinge für den Menschen lesbar hält und nicht mit dem unvermeidlichen zusätzlichen Gewicht von 33% von base64 geliefert wird
Pekka
3
Denken Sie daran, dass XML und CDATA Leerzeichen beibehalten.
zzzzBov
5
Ich habe mich für BASE64 entschieden, da es Daten mit 100% iger Genauigkeit speichert, wenn CDATA und Escapezeichen bei der Formatierung zusätzliche Leerzeichen hinzufügen. Das Hinzufügen von CDATA würde die Komplexität erhöhen und eine Art Vorscanning von HTML erfordern, falls HTML ein CDATA-Element enthält ...
Neuling
1
Der Link ist abgelaufen.
Franklin Yu
22

Solange Ihr HTML-Inhalt kein CDATAElement enthalten muss , können Sie den HTML-Code in einem CDATAElement enthalten. Andernfalls müssen Sie den XML-Entitäten entkommen.

<element><![CDATA[<p>your html here</p>]]></element>

VS

<element>&lt;p&gt;your html here&lt;/p&gt;</element>
zzzzBov
quelle
8

Der Zweck der BASE64-Codierung besteht darin, Binärdaten aufzunehmen und diese in einer Zeichenfolge zu speichern. Dieser Vorteil ist mit Kosten verbunden, einer Vergrößerung des Ergebnisses (ich denke, es ist ein Verhältnis von 4 zu 3). Es gibt zwei Lösungen. Wenn Sie wissen, dass die Daten gut geformtes XML sind, fügen Sie sie direkt hinzu. Die andere, bessere Option besteht darin, den HTML-Code in einen CDATA-Abschnitt innerhalb eines Elements innerhalb des XML-Codes aufzunehmen.

Reich
quelle