Umformen von XML in JSON: Unterschied zwischen den Versionen
(kein Unterschied)
|
Version vom 3. November 2011, 15:55 Uhr
Generelle Regeln zum Umformen von XML in JSON. Grundvoraussetzung ist ein Schema für das umzuformende XML, dass die genaue Feststellung der Kombinationsmöglichkeiten des XML erlaubt.
Root-Knoten
Der Root-Knoten entfällt in JSON.
<rss> <channel /> <rss>
wird zu
{ "channel":"" }
Knoten
Knoten-Namen werden zu Objekt-Eigenschaften in JSON. Knoten-Namen mit Namensräumen werden an Stelle eines :
mit _
geschrieben. Die Groß- / Kleinschreibung bleibt gewahrt.
<rss> <channel> <title /> <atom:link /> </channel> <rss>
wird zu
{ "channel":{ "title":"", "atom_link":"" } }
Kind-Knotennamen, die mehrfach in einem Knoten vorkommen
…werden zu einer Objekteigenschaft im JSON, deren Name der Mehrzahl des ursprünglichen Tagnamens entspricht, z.B. <item> als "items". Die Eigenschaft enthält dann ein Array von Objekten.
<rss> <channel> <title /> <item /> <item /> <item /> </channel> <rss>
wird zu
{ "channel":{ "title":"", "items:[ "", "", "" ] } }
Text-Inhalte eines Knotens
… werden zu Strings respektive Integers in JSON.
<rss> <channel> <title>Test</title> </channel> <rss>
wird zu
{ "channel":{ "title":"Test", } }
Knoten mit Attributen
Werden als Objekt geschrieben, so dass jedes Attribut eine Objekteigenschaft ist.
<head> <link rel="stylesheet" type="text/css" href="style.css" /> <head>
wird zu
{ "link":{ "rel":"stylesheet", "type":"text/css", "href":"style.css" } }
Knoten mit Attributen und Kindknoten werden zu gleichberechtigten Kind-Eigenschaften des Objekts in JSON. Falls ein Attributname und Sub-Tag identisch sind, wird das Attribut nicht angegeben.
<rss version="2.0"> <channel /> <rss>
wird zu
{ "version":"2.0", "channel":"" }
Knoten mit Attributen und/oder Kindknoten und Text-Inhalten werden wie o.a. gebildet. Der Textinhalt wird aber in eine Objekteigenschaft _content ausgelagert.
<rss version="2.0"> <channel /> Text <rss>
wird zu
{ "version":"2.0", "channel":"", "_content":"Text" }
Diese Vorschrift wird u.a. bei JSON-RSS verwendet.