Wann müssen Zeichen in XML entkoppelt werden?

8

Wann sollten wir < > & " ' in XML durch Zeichen wie &lt etc ersetzen?

Mein Verständnis ist, dass es nur dafür sorgt, dass, wenn der Inhaltsteil von XML > < hat, der Parser nicht den Anfang oder das Ende eines Tags behandelt.

Auch, wenn ich ein XML habe wie:

%Vor%

sollte dies entweder ersetzt werden:

  • &lthello&gtmor&gtning&lthello&gt
  • &lthello&gtmor>ning&lthello&gt
  • <hello>mor&gtning<hello>

Ich verstehe nicht, warum ersetzt werden muss. Wann genau ist es erforderlich und was genau (Tags oder Text) sollte ersetzt werden?

    
Kozlov 01.08.2011, 12:15
quelle

5 Antworten

7

< , > , & , " und ' haben alle eine besondere Bedeutung in XML (z. B. "Start der Entität" oder "Attributwertbegrenzer").

Damit diese Zeichen als Daten angezeigt werden (anstatt für ihre spezielle Bedeutung), können sie durch Entitäten dargestellt werden ( &lt; für < usw.).

Manchmal sind diese speziellen Bedeutungen kontextsensitiv (zB "bedeutet nicht" Attributbegrenzer "außerhalb eines Tags) und es gibt Orte, an denen sie als Daten roh erscheinen können. Statt sich über diese Ausnahmen Sorgen zu machen, ist es am Einfachsten stellen Sie sie immer als Entitäten dar, wenn Sie ihre spezielle Bedeutung vermeiden wollen, dann ist der einzige Fehler explizite CDATA-Abschnitte, in denen die spezielle Bedeutung nicht gilt (und & startet keine Entität).

  

sollte dies entweder zu

ersetzt werden

Es sollte nicht als eines von denen dargestellt werden. Entitäten müssen mit einem Semikolon abgeschlossen werden.

Wie Sie es darstellen sollten, hängt davon ab, welches Bit Ihres Datenbeispiels und welches Markup ist. Sie haben beispielsweise nicht gesagt, ob <hello> Daten oder das Start-Tag für ein Hallo-Element sein soll.

    
Quentin 01.08.2011, 12:22
quelle
7

In Abschnitt 2.4 der XML-Spezifikation heißt es:

  

Das kaufmännische Und-Zeichen (& amp;) und die linke spitze Klammer (& lt;) dürfen nicht   in ihrer literalen Form erscheinen, außer wenn sie als Markup-Trennzeichen verwendet werden,   oder in einem Kommentar, einer Verarbeitungsanweisung oder einem CDATA-Abschnitt. Ob   Sie werden an anderer Stelle benötigt. Sie müssen entweder mit numerischen Werten entschlüsselt werden   Zeichenreferenzen oder die Zeichenfolgen "& amp;" und "& amp; lt;"   beziehungsweise. Die rechte spitze Klammer (& gt;) kann unter Verwendung der   string "& amp; gt;" und muss aus Kompatibilitätsgründen mit beiden Entwürfen maskiert werden   "& amp; gt;" oder eine Zeichenreferenz, wenn sie in der Zeichenfolge "]] & gt;   "Inhaltlich, wenn diese Zeichenfolge nicht das Ende einer CDATA markiert   Abschnitt.

    
Cumbayah 01.08.2011 12:22
quelle
4

Sie müssen alle Zeichen kodieren, die in XML eine besondere Bedeutung haben, aber vom Parser nicht interpretiert werden sollen.

Angenommen, Ihr XML ist

%Vor%

Sie würden es als

kodieren %Vor%

oder verwenden Sie einen CDATA [Wikipedia] Abschnitt:

%Vor%     
Felix Kling 01.08.2011 12:21
quelle
1

Sie können diese Erklärung Linkbeschreibung hier eingeben sehen aber grundsätzlich, Zeichen wie & lt; und & gt; sind wichtig beim Parsen des XML-Dokuments. Wenn zusätzliche dieser Sonderzeichen in den Text oder den Text des XML-Knotens eingefügt werden, kann der Parser das Dokument nicht richtig verstehen. Wenn Sie XML an einen Webdienst senden, sollten alle Sonderzeichen ordnungsgemäß maskiert sein.

    
Ronnie 01.08.2011 12:22
quelle
1

Ссылка

Du kannst Gyoku verwenden, um den Charakteren in CDATA nicht zu entkommen.

    
tammysoliman 14.03.2014 17:17
quelle

Tags und Links