XML-Instanz von/in JSON konvertieren

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Benutzerhandbuch und Referenz > Menübefehle > Menü "Konvertieren" >

XML-Instanz von/in JSON konvertieren

Wenn es sich beim aktiven Dokument um ein XML-Dokument handelt, generiert dieser Befehl ein JSON-Dokument anhand dieses Dokuments. Wenn es sich beim aktiven Dokument um ein JSON-Dokument handelt, wird mit dem Befehl ein XML-Dokument anhand dieses Dokuments generiert. Das generierte Dokument wird in einem neuen Fenster geöffnet und kann anschließend in einem beliebigen Ordner gespeichert werden. Im Folgenden sind die Konvertierungsoptionen beschrieben. Nähere Informationen zu JSON und der Unterstützung für die Bearbeitung von JSON-Dateien in XMLSpy finden Sie im Abschnitt JSON und JSON-Schema.

 

Beispielkonvertierungen

Unten sehen Sie ein Beispiel für ein XML-Quelldokument. Unterhalb davon sehen Sie das JSON-Dokument, das mit dem Befehl XML-Instanz von/in JSON konvertieren generiert wurde.

 

XML-Dokument

 

<?xml version="1.0" encoding="UTF-8"?>

<Person first="Jim" last="James">

  <Address>

    <street>4 New Street</street>

    <city>New York</city>

    <state>NY</state>

    <code>10123</code>

  </Address>

  <Tel type="home">

      123 123-1234

  </Tel>

  <Tel type="office">

      123 987-9876

  </Tel>

</Person>

 

JSON-Dokument

 

{

 "XML": {

         "version": 1.0, 

         "encoding": "UTF-8"

 }, 

 "Person": {

         "first": "Jim", 

         "last": "James", 

         "Address": {

                 "street": "4 New Street", 

                 "city": "New York", 

                 "state": "NY", 

                 "code": 10123

         }, 

         "Tel": [ { "type": "home", 

                 "Text": "\r      123 123-1234\r  "}, { "type": "office", 

                 "Text": "\r      123 987-9876\r  "} ]

 }

}

 

Um ein JSON-Dokument in XML zu konvertieren, machen Sie das JSON-Dokument zum aktiven und klicken Sie auf den Befehl XML-Instanz von/in JSON konvertieren.

 

Optionen für die Konvertierung von XML in JSON

Wenn Sie den Befehl XML-Instanz von/in JSON konvertieren auswählen, um ein XML-Instanzdokument in ein JSON-Instanzdokument zu konvertieren, wird das Dialogfeld "XML in JSON konvertieren" (Abbildung unten) angezeigt. Sie können auswählen, ob Sie JSON oder JSON5 konvertieren möchten. Aktivieren Sie die gewünschten Konvertierungsoptionen und klicken Sie auf OK. Daraufhin wird anhand der XML-Instanz ein JSON-Instanzdokument generiert und das generierte JSON-Dokument wird in einem neuen Fenster geöffnet.

JSONConvertXMLInstance2JSON

Mit den beiden ersten Optionen wird definiert, ob Präfixe zu JSON-Eigenschaftsnamen hinzugefügt werden sollen, damit es zu keinen Konflikten zwischen Elementen auf derselben Ebene kommt. Die beiden Codefragmente unten veranschaulichen dies. Das XML-Attribut somenode wurde in die JSON-Eigenschaft @somenode konvertiert. Auf diese Art wird ein Konflikt mit der (anhand des XML-Elements somenode erstellten) JSON-Eigenschaft somenode verhindert.

 

XML-Instanz

 

<root somenode="value">

    <somenode>content</somenode>

</root>

 

 

JSON-Instanz

 

{

    "root": {

        "@somenode": "value",

        "somenode": "content"

    }

}

 

 

Mit den nächsten Optionen können Sie definieren, ob bestimmte Arten von XML-Nodes konvertiert werden sollen oder nicht. Wenn XML-Kommentare inkludiert werden, erhalten diese den Namen "#". Text-Nodes (die normalerweise in Elementen mit gemischtem Inhalt vorkommen) erhalten den Namen "$". Wenn ein XML-Node ein Namespace-Präfix hat, so wird der entsprechende JSON-Name mit diesem Namespace-Präfix erstellt. Wenn es auf ein und derselben Ebene Elemente mit demselben Namen gibt, werden diese als gleiche Komponenten betrachtet. Auch Nodes wie z.B. Kommentare, Processing Instructions und Text() auf derselben Ebene sind gleiche Komponenten. Wenn auf derselben Ebene gleiche Komponenten vorhanden sind, können Sie auswählen, ob ein Array erstellt werden soll oder nicht. Die Optionen sind, ob ein Array aus allen gleichen Komponenten, nur aus benachbarten gleichen Komponenten oder ob gar kein Array erstellt werden soll.

 

Bei Verwendung der Option XML-Schema-Typ-Info verwenden können Konvertierungen auf Basis des XML-Schema-Typs des Quell-Node durchgeführt werden. Wenn ein Node z.B. im Schema als xs:string-Typ definiert ist, erhält die Eigenschaft des JSON-Zielobjekts den JSON-Typ string und wird in Anführungszeichen gesetzt. Dies ist z.B. nützlich, wenn eine Zahl im XML-Quell-Node als String gespeichert ist und bei der Konvertierung in JSON der genaue Typ beibehalten werden soll.

 

Optionen für die Konvertierung von JSON in XML

Wenn Sie den Befehl XML-Instanz von/in JSON konvertieren auswählen, um ein JSON-Instanzdokument in ein XML-Instanzdokument zu konvertieren, wird das Dialogfeld "JSON in XML konvertieren" (Abbildung unten) angezeigt. Aktivieren Sie die gewünschten Konvertierungsoptionen und klicken Sie auf OK. Daraufhin wird anhand der JSON-Instanz ein XML-Instanzdokument generiert und das generierte XML-Dokument wird in einem neuen Fenster geöffnet.

JSONConvertJSONInstance2XML

Beachten Sie die folgenden Punkte:

 

JSON-Objekteigenschaften werden in XML-Elemente konvertiert. Mit Hilfe der ersten Optionen im Dialogfeld können Sie auswählen, ob einige Arten von Eigenschaften erstellt werden sollen oder nicht.
Doppelpunkte in Eigenschaftsnamen kodieren: Bei Auswahl dieser Option werden Doppelpunkte in JSON-Namen kodiert und nicht als Doppelpunkte erstellt. Falls die Option deaktiviert ist, werden die Doppelpunkte beibehalten.
JSON-Werttypinformationen beibehalten: Bei Auswahl dieser Option werden die JSON-Typinformationen einer Eigenschaft als Attribut-Wert-Paar des entsprechenden Elements erstellt.
Container-Element für jedes JSON-Array erstellen: Das Container-Element in der XML-Dokumentation erhält den Namen des JSON-Array-Objekts. Die Elemente des JSON-Array werden als XML-Elemente in diesem Container erstellt. Jedes erhält im Textfeld Elementname des Array-Elements definierten Namen.

 


© 2019 Altova GmbH