Ich habe in vielen XML-Datei gesehen hat die Daten in diesem <![CDATA[ ]]>
. Was nützt das?Warum XML-Tag-Daten in diesem <![CDATA[]]>
Antwort
aus Wikipedia
A CDATA-Abschnitt mit der folgenden Sequenz beginnt:
<![CDATA[
und endet mit dem ersten Auftreten der Sequenz:
]]>
Alle Zeichen zwischen diesen beiden Sequenzen umschlossen werden als Zeichen interpretiert, nicht als Markup- oder Entity-Referenzen. Zum Beispiel in einer Zeile wie dieser:
<sender>John Smith</sender>
Die öffnenden und schließenden "Absender" -Tags werden als Markup interpretiert. Wenn jedoch wie folgt geschrieben:
<![CDATA[<sender>John Smith</sender>]]>
dann wird der Code gleich interpretiert, als ob es so geschrieben worden war:
<sender>John Smith</sender>
Schauen Sie sich die Wiki Seite für weitere Details.
Siehe CDATA at Wikipedia:
In einem XML-Dokument oder externen analysierten Entity, ein CDATA-Abschnitt ein Abschnitt von Elementinhalt ist, der markiert ist für die Parser als nur Zeichendaten zu interpretieren, nicht Markup.
Das bedeutet, dass der Parser keine Daten interpretiert, die in <![CDATA[ ]]>
enthalten sind.
Nehmen wir an, Sie möchten HTML als Text in einem XML-Dokument speichern. Das ist falsch:
<root>
<myhtml>
<div><b>Foo bar</b></div>
</myhtml>
</root>
Der Parser würde versuchen <div><b>Foo bar</b></div>
zu analysieren und DOM-Elemente zu erstellen. Es würde in diesem Beispiel funktionieren, aber nicht für Dokumente, die einer DTD entsprechen.
Stattdessen wollen wir dies:
<root>
<myhtml>
<![CDATA[ <div><b>Foo bar</b></div> ]]>
</myhtml>
</root>
und <div><b>Foo bar</b></div>
wird der Inhalt eines Textknoten werden.
Es ermöglicht literalen Text, einschließlich der meisten xml "Sonderzeichen". Es ist nicht Teil der "äußeren" XML-Daten, sondern nur Text.
Alles in einem CDATA-Abschnitt wird vom Parser ignoriert.
Zum Beispiel Bild, das Sie Javascript in einem XML-Dokument senden möchten, da es höchstwahrscheinlich spezielle Zeichen enthalten wird (<,>, &, etc) der XML-Parser wird Fehler erzeugen.
Mit diesem Tag wird der Parser es nicht analysieren und es werden keine Fehler erzeugt.
- 1. Was macht `1 << 0 in diesem Code-Snippet?
- 2. Warum ist Param in diesem Lambda-Ausdruck?
- 3. Warum funktioniert selectAnnotation in diesem Szenario nicht?
- 4. Warum wird System.char [] in diesem Fall ausgedruckt?
- 5. Warum ist LINQ schneller in diesem Beispiel
- 6. Warum funktioniert os.path.join() in diesem Fall nicht?
- 7. Warum Datenbankverbindungen sind in diesem Fall geschlossen
- 8. Warum gibt es in diesem Rautenmuster Mehrdeutigkeit?
- 9. Warum kein Deadlock in diesem Szenario?
- 10. Warum Filter in diesem Kontext nicht funktioniert?
- 11. Warum funktioniert in diesem Code keine Inferenz?
- 12. Warum wird in diesem Fall ref benötigt?
- 13. Warum BufferedReader in diesem Fall verwenden?
- 14. Warum funktioniert mv in diesem Bash-Skript?
- 15. Warum gilt RVO nicht in diesem Code
- 16. Warum ist Warteschlangensperre in diesem Beispiel erforderlich
- 17. Warum werden Dreiecke in diesem Netz abgeschnitten?
- 18. Warum überlappen sich Muster in diesem Beispiel?
- 19. Warum ist values.length = 2 in diesem Codeabschnitt?
- 20. Warum wirft es in diesem Fall NullPointerException?
- 21. warum Liste <String> ist immer die Größe 1 in diesem Fall der Rückkehr
- 22. Warum `` Änderungen `` `` zurückgeben <<
- 23. Warum Bilder in IE6 ~ 7 in diesem HTML-Code gehen?
- 24. Warum funktioniert glReadPixels() in diesem Code in iOS 6.0 nicht?
- 25. Warum ArrayName [i] in diesem Fall nicht in C++
- 26. Ich verstehe nicht, was "temp << = y;" tut in diesem Javascript-Programm
- 27. Warum 1 << 4 statt 16?
- 28. Warum RoutedCommand nicht an diesem Code arbeitet?
- 29. Warum die Verwendung von <% und <% = in den Ansichten?
- 30. Warum sind Func <> und Expression <Func<>> austauschbar? Warum arbeitet man in meinem Fall?