webentwicklung-frage-antwort-db.com.de

Wie binde ich &, <,> etc in XML-Attributwerte ein?

Ich möchte eine XML - Datei erstellen, in der die Struktur eines Java) - Programms gespeichert wird. Ich kann das Java=) - Programm erfolgreich analysieren und das erstellen Tags nach Bedarf. Das Problem tritt auf, wenn ich versuche, den Quellcode in meine Tags aufzunehmen, da Java Quellcode möglicherweise eine große Anzahl von Entitätsreferenzen und reservierten Zeichen wie & verwendet. , <, >, &. Ich kann kein gültiges XML erstellen.

Mein XML sollte so aussehen:

<?xml version="1.0"?>
<prg name="prg_name">
  <class name= "class_name>
    <parent>parent class</parent>
      <interface>Interface name</interface>
.
.
.
      <method name= "method_name">
        <statement>the ordinary Java statement</statement>
        <if condition="Conditional Expression">
          <statement> true statements </statement>
        </if>
        <else>
          <statement> false statements </statement>
        </else>
        <statement> usual control statements </statement>
 .
 .
 .
      </method>
    </class>
 .
 .
 .
 </prg>

Das Problem ist jedoch, dass in bedingten Ausdrücken von if oder anderen Anweisungen viele & Oder andere reservierte Symbole enthalten sind, die die Validierung von XML verhindern. Da alle diese Daten (Quellcode) vom Benutzer angegeben werden, habe ich wenig Kontrolle darüber. Das Entkommen der Charaktere ist zeitaufwändig.

Ich kann CDATA verwenden, um den Elementtext zu maskieren, aber es kann nicht für Attributwerte verwendet werden, die bedingte Ausdrücke enthalten. Ich verwende Antlr Java Grammatik, um das Java) Programm zu analysieren und die Attribute und den Inhalt für die Tags zu erhalten andere Problemumgehung dafür?

38
Sudh

Du musst fliehen

" to  &quot;
' to  &apos;
< to  &lt;
> to  &gt;
& to  &amp;

für xml.

69
Bala R

In XML-Attributen müssen Sie escapen

" with &quot;
< with &lt;
& with &amp;

wenn Sie Attributwerte in doppelte Anführungszeichen (") setzen, z.

<MyTag attr="If a&lt;b &amp; b&lt;c then a&lt;c, it's obvious"/>

bedeutungs-Tag MyTag mit Attribut attr mit Text If a<b & b<c then a<c, it's obvious - Hinweis: Es ist nicht erforderlich, &apos; zu verwenden, um das Zeichen ' zu maskieren.

Wenn Sie Attributwerte in einfache Anführungszeichen (') setzen, sollten Sie diese Zeichen maskieren:

' with &apos;
< with &lt;
& with &amp;

und Sie können " schreiben, wie es ist. Austretende von > mit &gt; in Attributtext nicht erforderlich, z.B. <a b=">"/> ist wohlgeformtes XML.

21
izogfif