webentwicklung-frage-antwort-db.com.de

Wie kann ich kaufmännisches Und in XML umgehen, damit sie als Entitäten in HTML gerendert werden?

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.

493
AJM

Wenn Ihre XML & enthält, wird der Text & angezeigt.

Wenn Sie das in HTML verwenden, wird das als & gerendert.

399
Wim ten Brink

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.

189
John Feminella

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 &.

125
trouble

Verwenden Sie CDATA Tags:

 <![CDATA[
   This is some text with ampersands & other funny characters. >>
 ]]>
64
scragar

&amp; sollte gut funktionieren, Wikipedia hat ein Liste der vordefinierten Entitäten in XML .

42
nikc.org

In meinem Fall musste ich es auf %26 ändern.

Ich musste & in einer URL entkommen. Also hat &amp; 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.

10
Serhat Akay

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.

5
mcampos

&amp; 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 &amp; ändern) und dann Verwenden Sie diese Option, um ordnungsgemäß codiertes HTML zu erstellen (dabei wird & erneut in &amp; geändert). Das ergibt:

&amp;amp;

Eine ausführlichere Erläuterung der XML-Codierung finden Sie unter:

Welche Zeichen brauche ich, um in XML-Dokumenten zu entkommen?

4
Riley Major

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.

3
Scott Biggs

<xsl:text disable-output-escaping="yes">&amp;&nbsp;</xsl:text> erledigt den Trick.

2
Rick

Ü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 &#60;&#62; verwenden.

<Employees Id="1" Name="ABC">
  <Query>
    SELECT * FROM EMP WHERE ID=1 AND RES &#60;&#62; 'GCF'
  <Query>
</Employees>

Klicken Sie hier um alle Codes zu sehen.

0
Sarath Avanavu

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.

0