Heim > Artikel > Backend-Entwicklung > Häufig gestellte Fragen zum Einstieg in XML (3)
Wie lade ich Dokumente mit Fremd- und Sonderzeichen?
Dokumente können fremde Zeichen enthalten, wie zum Beispiel:
fremde Zeichen (úóí?)
Zum Beispiel müssen fremde Zeichen wie 磲 vorhanden sein vorangestellt ist eine Escape-Sequenz. Fremdzeichen können wie folgt UTF-8-kodiert oder mit einer anderen Kodierung angegeben werden:
fremde Zeichen (磲)
Die XML-Datei wird jetzt korrekt geladen.
Andere Zeichen sind in XML reserviert und müssen anders behandelt werden. Das folgende XML:
This & that
erzeugt den folgenden Fehler:
Hier sind keine Leerzeichen zulässig.
Zeile 0000001: Dies & das
Position 0000012: ----------^
Hier ist & Teil der XML-Syntaxstruktur, wenn es einfach platziert wird Innerhalb der XML-Datenquelle kann es nicht als & interpretiert werden. Sie müssen spezielle Zeichenfolgen namens „Entitäten“ ersetzen.
Dies & das
Die folgenden Zeichen erfordern entsprechende Entitäten:
< <
& &
> ' '
Das einfache Anführungszeichen wird hier sowohl als Attributtrennzeichen als auch innerhalb des Attributwerts selbst verwendet. Um dieses Problem zu beheben, können Sie das Attributtrennzeichen in doppelte Anführungszeichen ändern:
Oder Sie können die einfachen Anführungszeichen in Entitäten ' maskieren.
Beide oben genannten Methoden werden in übergeben XML-Objektmodell Die getAttribute-Methode gibt den Attributwert von John's Stuff zurück. Ebenso können Sie für doppelte Anführungszeichen die Entität
" verwenden. Sie können auch Sonderzeichen im Elementinhalt verarbeiten, indem Sie den Text in einen CDATA-Abschnitt platzieren. Folgendes ist richtig:
In diesem Beispielsweise zeigt das XML-Objektmodell den CDATA-Knoten als untergeordneten Knoten des XML-Knotens an, der die Zeichenfolge
This & that is just „text“ content.
als nodeValue zurückgibt COM-Komponente in Visual C++ 6.0 import „msxml.dll“ named_guids no_namespace Es definiert alle IXML*-Schnittstellen und Schnittstellen-IDs, damit sie in Anwendungen verwendet werden können. Sie können die MSXML-Typbibliothek und Header-Dateien auch von INETSDK (Englisch) und uuid.lib erhalten die Klassen-IIDs enthält.
Copyright? 🎜>
Es wird der folgende Fehler erzeugt:Copyright ? 2000, ...
--------^ Dies liegt daran, dass XML nur fünf integrierte Entitäten hat. Weitere Informationen Informationen zu integrierten Entitäten finden Sie unter „Wie lade ich Dokumente mit Fremd- und Sonderzeichen?“ Um HTML-Entitäten zu verwenden, müssen Sie diese mit einer DTD definieren. Weitere Informationen finden Sie in den W3C-XML-Empfehlungen (auf Englisch). es direkt im DOCTYPE-Tag wie folgt:
Copyright ? 2000, Microsoft Inc, Alle Rechte vorbehalten
Um es zu laden, müssen Sie es umdrehen Deaktivieren Sie das Attribut „validateOnParse“ der IXMLDOMDocument-Schnittstelle. Versuchen Sie, es in die Validator-Testseite einzufügen, deaktivieren Sie die DTD-Validierung und klicken Sie auf Validieren. Beachten Sie, dass das Dokument geladen wird und die Copyright-Zeichen im DOM-Baum am Ende der Validierungsseite angezeigt werden.
Wenn die DTD-Validierung abgeschlossen ist, muss die HTML-Entität als Parameter-Entität wie folgt in die vorhandene DTD eingefügt werden:
%HTMLENT;
% HTMLENT;
Wie gehe ich mit Leerzeichen im Elementinhalt um?
XML DOM bietet drei Möglichkeiten, auf den Textinhalt eines Elements zuzugreifen:
Attributverhalten
nodeValue gibt TEXT, CDATA, COMMENT und PI zurück, wie in der ursprünglichen XML-Quelle angegeben Der Rohtextinhalt auf dem Knoten (einschließlich Leerzeichen). Für ELEMENT-Knoten und DOCUMENT selbst wird null zurückgegeben.
Daten wie nodeValue
Text Wiederholt mehrere TEXT- und CDATA-Knoten im angegebenen Teilbaum verbinden und das kombinierte Ergebnis zurückgeben.
Hinweis: Leerzeichen umfassen neue Zeilen, Tabulatoren und Leerzeichen.
PRESERVEWHITESPACE = TRUE Wenn das Dokument geladen wird
PreserVewhiteSpace = True PreservedSpace = True PreservewhiteSpace = FA LSE PRESERVEWHITESPACE = FALSE
XML: Space = Preserve XML: Space = DEFAULT XML : space=preserve 🎜>preserveWhiteSpace=true PreserveWhiteSpace=true PreserveWhiteSpace=false
xml:space=preserve xml:space=default xml:space=preserve xml:space=default reserviert halbreserviert Und abschneiden Halbkonserviert Halb erhalten und abgeschnitten
Beibehalten bedeutet hier, dass der ursprüngliche Textinhalt genau derselbe ist wie im ursprünglichen XML-Dokument. Abschneiden bedeutet, dass führende und nachfolgende Leerzeichen entfernt wurden. Halbkonserviert bedeutet, dass „signifikante Leerzeichen“ erhalten bleiben und „unwichtige Leerzeichen“ normalisiert werden. Wichtige Leerzeichen sind Leerzeichen innerhalb des Textinhalts. Nicht signifikante Leerzeichen sind die Leerzeichen zwischen Token und sehen so aus: Rot ist ein unwichtiges Leerzeichen, das ignoriert werden kann, während Grün ein wichtiges Leerzeichen ist, weil es Teil des Textinhalts ist und daher eine wichtige Bedeutung hat, die ignoriert werden kann ignoriert. In diesem Beispiel gibt die Texteigenschaft also Folgendes zurück:
Reserviert „nt JanentSmith n“
Reserviert und abgeschnitten „JanentSmith“
Semi- reserviert „ Jane Smith „
Halbkonserviert und abgeschnitten „Jane Smith“
Im folgenden Beispiel werden die Inhalte von CDATA-Knoten oder „preserve“-Knoten verkettet, da sie nicht an der Normalisierung unwichtiger Leerzeichen beteiligt sind. Zum Beispiel:
t Jane n
t Smith ]>n
In diesem Fall sind die Leerzeichen im CDATA-Knoten nein länger mit „unwichtigen“ Leerzeichen „zusammenführen“ und nicht abschneiden. Der Fall „halb erhalten und abgeschnitten“ gibt also Folgendes zurück: Der Inhalt ist irrelevant. Wenn CDATA durch Folgendes ersetzt wird, werden die gleichen Ergebnisse zurückgegeben:
Smith
Entitäten sind speziell
Entitäten werden als Teil der DTD geladen und analysiert und unter dem DOCTYPE-Knoten angezeigt . Sie müssen keinen xml:space-Bereich haben. Beispiel:
Jane n
tn ">
]>
DOCTYPE foo
ENTITY: Jane
ELEMENT: Name
TEXT: Jane
TEXT>:Software Design Engineer
ELEMENT: fooATTRIBUTE: xml:space="preserve" > ENTITYREF: Jane
Bitte beachten Sie, dass der DOM-Baum, der unter dem ENTITY-Knoten innerhalb des DOCTYPE verfügbar gemacht wird, nicht enthält alle WHITESPACE-Knoten. Dies bedeutet, dass die untergeordneten Knoten des ENTITYREF-Knotens keine WHITESPACE-Knoten haben, auch wenn sich die Entitätsreferenz in der XML befindet. Dasselbe gilt für den Bereich von :space="preserve". In einem bestimmten Dokument wird normalerweise auf denselben Baum verwiesen. Wenn die Entität unbedingt Leerzeichen beibehalten muss, muss sie intern ihr eigenes xml:space-Attribut angeben oder den Schalter „preserveWhiteSpace“ auf „true“ setzen Wie geht man mit Leerzeichen in Attributen um?
Es gibt mehrere Möglichkeiten, auf Attribute zuzugreifen. Die IXMLDOMAttribute-Eigenschaft entspricht den Eigenschaften „nodeValue“ und „text“. Von der Eigenschaft zurückgegebener Text.
attrNode.nodeValue
attrNode.value
getAttribute("name") gibt genau den gleichen Inhalt (und die gleichen erweiterten Entitäten) wie im Originaldokument zurück.
attrNode.nodeTypedValue Null
attrNode.text ist dasselbe wie nodeValue, außer dass führende und nachfolgende Leerzeichen abgeschnitten wurden.
Die Spezifikation „XML Language“ definiert das folgende Verhalten für XML-Anwendungen: Vom Attributtyp zurückgegebener Text
CDATA ID, IDREF, IDREFS, ENTITY, ENTITIES, NOTATION, Enumeration
Halbnormalisierung Vollständige Normalisierung
Hier bedeutet Halbnormalisierung die Umwandlung neuer Zeilen und Tabulatorzeichen in Leerzeichen, aber mehrere Leerzeichen werden nicht zu einem Leerzeichen degeneriert.
Das Obige ist der Inhalt der FAQ (3) für den Einstieg in XML. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!