2009-04-03 25 views
1

Ich versuche, einige JSON aus einer XML-Datei zu generieren, aber keine direkte Konvertierung. Ich möchte Bits auswählen und eine etwas andere Struktur haben.Generiere verschiedene JSON aus XML

Ich würde lieber nicht nur eine gigantische Saite aneinander ketten und mich fragen, ob es dafür ein paar anständige Bibliotheken gibt.

Auch für die Prüfung würde Ich mag Lage sein, die erstellt json zu validieren, nur eine einfache Überprüfung, ob es gültig ist JSON

Antwort

1

Legen Sie das XML in einen Satz von Klassen (verwenden XMLSerializer) dann JSON implementieren Generator-Methoden für diese Klassen. Verschiedene Methoden, verschiedene JSON.

1

Sie können XML problemlos in andere Textdarstellungen konvertieren, indem Sie XSLT verwenden, insbesondere Datei-zu-Datei mit xsltproc oder eine Befehlszeilenversion von xalan.

XSLT ist manchmal eine schwierige Programmiersprache, aber wenn Sie diese Route gehen, habe ich zwei Empfehlungen für JSON-Konvertierungen. Legen Sie Ihre Ausgabe auf Text, mit einem UTF-8-Zeichensatz:

<xsl:output method="text" encoding="UTF-8" /> 

und laufen JSLint auf dem Ergebnis, um alle Fehler in Ihrer XSLT-Datei zu fangen.

+0

Ja, ich habe XSLT verwendet, um dies in der Vergangenheit zu erreichen, aber arent XSLT ist ziemlich langsam? Ich brauche das ziemlich nippy. – qui

1

Ich würde wahrscheinlich Linq zu XML (XElement und Freunde) verwenden, um das neue Objekt zu generieren und dieses Objekt dann an den Json-Serializer zu übergeben.

0

Andere Antworten sehen gut aus: Ich denke, ich würde auch Quellformat in Objekte binden, dann als die anderen Formate serialisieren. Und alle Transformationen würden für Objekte ausgeführt werden und keine Datenformatdarstellung verwenden. Wenn Sie einen geeigneten Parser (für die Eingabe) und Generatoren/Serialisierer (für die Ausgabe) verwenden, müssen Sie sich nicht um die Wohlgeformtheit kümmern (das resultierende xml oder json ist syntaktisch korrekt). Und für Biz-Logik-Gültigkeit könnten Sie (und sollten) es tun, Objekte zu verwenden.

Verwandte Themen