Ich habe XML-Text, den ich in einer HTML-Seite rendern möchte. Dieser Text enthält ein kaufmännisches Und, das ich in seiner Entitätsdarstellung rendern möchte: &
.
Wie kann ich dieses kaufmännische Und in der Quell-XML umgehen? Ich habe versucht, &
, aber dies wird als das tatsächliche kaufmännische Und-Zeichen (&
) dekodiert, das in HTML ungültig ist.
Deshalb möchte ich es so umgehen, dass es auf der Webseite, die die XML-Ausgabe verwendet, als &
gerendert wird.
Wenn Ihre XML &
enthält, wird der Text &
angezeigt.
Wenn Sie das in HTML verwenden, wird das als &
gerendert.
Gemäß §2.4 der XML 1.0-Spezifikation sollten Sie in der Lage sein, &
zu verwenden.
Ich habe es mit Amp versucht. aber das ist nicht erlaubt.
Sind Sie sicher, dass es sich nicht um ein anderes Problem handelt? XML definiert dies explizit als die Möglichkeit, kaufmännisches Und-Zeichen zu umgehen.
Das Zeichen _&
_ ist selbst ein Escape-Zeichen in XML. Die Lösung besteht darin, es und ein Unicode-Dezimaläquivalent für _&
_ zu verketten und so sicherzustellen, dass keine XML-Analysefehler auftreten. Das heißt, ersetzen Sie das Zeichen _&
_ durch &
.
Verwenden Sie CDATA
Tags:
<![CDATA[
This is some text with ampersands & other funny characters. >>
]]>
&
sollte gut funktionieren, Wikipedia hat ein Liste der vordefinierten Entitäten in XML .
In meinem Fall musste ich es auf %26
ändern.
Ich musste &
in einer URL entkommen. Also hat &
nicht für mich geklappt. Die Funktion rlencode ändert &
in %26
. Auf diese Weise haben sich weder XML noch der Browser-URL-Mechanismus über die URL beschwert.
Ich habe es mit Amp versucht, aber es hat nicht funktioniert. Basierend auf der Antwort von Wim ten Brink habe ich es mit Amp; Amp versucht und es hat funktioniert.
Einer meiner Kollegen schlug mir vor, # x26 zu verwenden; und das funktionierte unabhängig davon, wie oft es gerendert werden darf.
&
ist die Möglichkeit, ein kaufmännisches Und in den meisten Abschnitten eines XML-Dokuments darzustellen.
Wenn Sie möchten, dass XML in HTML angezeigt wird, müssen Sie zuerst richtig codiertes XML erstellen (dazu müssen Sie &
in &
ändern) und dann Verwenden Sie diese Option, um ordnungsgemäß codiertes HTML zu erstellen (dabei wird &
erneut in &
geändert). Das ergibt:
&amp;
Eine ausführlichere Erläuterung der XML-Codierung finden Sie unter:
Welche Zeichen brauche ich, um in XML-Dokumenten zu entkommen?
Wie wäre es mit dem Unicode \u0026
? Funktioniert für mich in meinen Android XML-Dateien. Wenn Probleme auftreten, lassen Sie es mich wissen.
<xsl:text disable-output-escaping="yes">& </xsl:text>
erledigt den Trick.
Überlegen Sie, ob Ihre XML-Datei wie folgt aussieht.
<Employees Id="1" Name="ABC">
<Query>
SELECT * FROM EMP WHERE ID=1 AND RES<>'GCF'
<Query>
</Employees>
Sie können den <>
nicht direkt verwenden, da er einen Fehler auslöst. In diesem Fall können Sie stattdessen <>
verwenden.
<Employees Id="1" Name="ABC">
<Query>
SELECT * FROM EMP WHERE ID=1 AND RES <> 'GCF'
<Query>
</Employees>
Klicken Sie hier um alle Codes zu sehen.
Ein verwandtes Problem ist das Codieren von XML-Elementinhalten, wenn dieser Inhalt ein kaufmännisches Und enthält - wenn das XML Teil eines mit einer GET-Aktion übermittelten URI ist. (Abgesehen von der Weisheit einer solchen API - damit musste ich mich heute befassen.) Ich habe alles versucht, was oben erwähnt wurde, und das einzige, was tatsächlich funktionierte, war %26amp;
Der %26
wurde benötigt, um URL-kodiert das erste Zeichen in der XML-Kodierung für kaufmännisches Und. Der amp;
nach dem %26
wurde benötigt, weil der XML-Teil des URI in ein XML-Dokument serverseitig geladen wurde. In diesem unterhaltsamen Szenario mussten also beide Codierungsmethoden zusammengefügt werden.