XML-Instanz von/in JSON/YAML konvertieren
Wenn es sich beim aktiven Dokument um ein XML-Dokument handelt, generiert dieser Befehl ein JSON- oder YAML-Dokument anhand dieses Dokuments. Wenn es sich beim aktiven Dokument um ein JSON- oder YAML-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. Informationen zu YAML finden Sie im Abschnitt YAML.
Beispielkonvertierungen
Unten sehen Sie ein Beispiel für ein XML-Quelldokument und darunter sehen Sie die anhand dieses Dokuments mit dem Befehl XML-Instanz von/in JSON/YAML konvertieren generierten JSON- und YAML-Dokumente.
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>
Um ein XML-Dokument in JSON oder YAML zu konvertieren, machen Sie das XML-Dokument zum aktiven Dokument und klicken Sie auf den Befehl XML-Instanz von/in JSON/YAML konvertieren.
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 Dokument und klicken Sie auf den Befehl XML-Instanz von/in JSON/YAML konvertieren.
YAML-Dokument
<Person>
"@first": Jim
"@last": James
Address:
street: 4 New Street
city: New York
state: NY
code: "10123"
Tel:
- "@type": home
$: |
123 123-1234
- "@type": office
$: |
123 987-9876
Um ein YAML-Dokument in XML zu konvertieren, machen Sie das YAML-Dokument zum aktiven Dokument und klicken Sie auf den Befehl XML-Instanz von/in JSON/YAML konvertieren.
Optionen für die Konvertierung von XML in JSON/YAML
Wenn Sie den Befehl XML-Instanz von/in JSON/YAML konvertieren auswählen, um ein XML-Instanzdokument in ein JSON- oder YAML-Instanzdokument zu konvertieren, wird das Dialogfeld "XML in JSON/YAML konvertieren" (Abbildung unten) angezeigt. Sie können auswählen, ob Sie in JSON, JSON5, JSON-Kommentare oder YAML konvertieren möchten. Aktivieren Sie anschließend die gewünschten Konvertierungsoptionen und klicken Sie auf OK. Daraufhin wird anhand der XML-Instanz ein JSON- oder YAML-Instanzdokument generiert und das generierte Dokument wird in einem neuen Fenster geöffnet.
Mit den beiden ersten Optionen wird definiert, ob Präfixe zu JSON/YAML-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/YAML-Eigenschaft @somenode konvertiert. Auf diese Art wird ein Konflikt mit der (anhand des XML-Elements somenode erstellten) JSON/YAML-Eigenschaft somenode verhindert.
XML-Instanz
<root somenode="value">
<somenode>content</somenode>
</root>
JSON-Instanz
{
"root": {
"@somenode": "value",
"somenode": "content"
}
}
YAML-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/YAML-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 das Array aus allen gleichen Komponenten, nur aus benachbarten gleichen Komponenten oder gar nicht erstellt werden soll.
Bei Auswahl der Option XML-Schema-Typ-Info verwenden, können Konvertierungen auf Basis des XML-Schema-Typs des Quell-Node vorgenommen werden. So erhält etwa ein Node, der im Schema mit dem Typ xs:string definiert wurde, die JSON-Objekteigenschaft vom Typ string und der Node 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 Typ beibehalten werden soll.
Optionen für die Konvertierung von JSON/YAML in XML
Wenn Sie den Befehl XML-Instanz von/in JSON/YAML konvertieren auswählen, um ein JSON- oder YAML-Instanzdokument in ein XML-Instanzdokument zu konvertieren, wird das Dialogfeld "XJSON/YAML in XML konvertieren" (Abbildung unten) angezeigt. Aktivieren Sie die gewünschten Konvertierungsoptionen und klicken Sie auf OK. Daraufhin wird anhand der JSON- oder YAML-Instanz ein XML-Instanzdokument generiert und das generierte XML-Dokument wird in einem neuen Fenster geöffnet.
Beachten Sie die folgenden Punkte:
•JSON/YAML-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/YAML-Namen kodiert und nicht als Doppelpunkte erstellt. Wenn die Option nicht aktiviert ist, werden Doppelpunkte unverändert belassen.
•JSON-Werttypinformationen beibehalten: Bei Auswahl dieser Option werden die JSON-Typinformationen als Attribut-Wert-Paar des entsprechenden Elements erstellt.
•Container-Element für jedes JSON-Array erstellen: Das Container-Element im XML-Dokument erhält den Namen des JSON-Array-Objekts. Die Elemente des JSON-Array werden als XML-Elemente in diesem Container erstellt. Jedes erhält den im Textfeld Elementname des Array-Elements definierten Namen.