Je explique d'abord mon vrai problème. P>
J'ai un Maintenant, le Mon intention était d'utiliser Alors j'ai pensé à Après cela, je peux charger la classe à l'exécution et, avec Le problème est que je n'ai pas trouvé d'exemple, et je n'ai rien trouvé dans Il n'y a pas de moyen d'utiliser Alternativement, il n'y a pas de moyen de convertir PS: J'utilise Java Azul Zulufx 8. Je ne pense pas que ce soit pertinent, mais vous ne savez jamais. P> XML code> et le schéma code> xml code> (un
xsd code>). Je veux le transformer en
JSON code>.
xml code> et son schéma peut changer, je dois donc le faire au moment de l'exécution. P>
XSD code> peut être un type très complexe. Je sais que cela existe des bibliothèques qui transforment
xml code> vers
json code> directement, mais je ne pense pas qu'ils vont bien fonctionner avec des structures compliquées. P>
jackson code>, mon
JSON code> bibliothèque. Mais
jackson code> nécessite un
java code> classe et un objet
java code> pour sérialiser l'objet comme
JSON code>. P>.
jaxb code>. Avec
jaxb code> je peux créer un .java à partir d'un schéma
xml code>. P>
jaxb code>, créer une instance de la classe à l'aide du
xml code>. Alors
jackson code>. P>
Jaxb API CODE> DOCS, comment utiliser
jaxb code> pour convertir un < Code> xml code> schéma à une classe Java à l'aide de son
API code>. Tous les exemples suggèrent d'utiliser programmes externes em> strong> pour générer les classes. Je ne veux pas faire ce em> strong>, puisque IMHO c'est moins portable. P>
jaxb code> ou une autre
java code> bibliothèque, pour convertir un "code> xml code> schéma en une classe .java en utilisant < Code> Java code> code et non un outil externe? p>
xml code> vers
json code>, à l'aide du schéma
xml code> comme source de sa structure? P >
4 Réponses :
Si vous utilisez Eclipse, vous pouvez simplement cliquer avec le bouton droit de la souris sur le schéma, cliquez sur Générer et choisissez des classes JAXB. Suivez ensuite le simple sorcier et il créera des cours de Java pour vous. P>
Non, je veux le créer à l'aide d'un script.
Si vous choisissez un analyseur XML prenant en charge la validation XSD, il peut également fournir une API à interroger les informations définies dans le XSD. Vous pourriez essayer des XERCES. P>
S'il n'y a pas de tel API, vous devrez analyser vous-même le XSD. Créez une instance d'analyseur pour analyser le XML et une pour analyser le XSD. La structure XSD n'est pas si compliquée, il convient donc de combiner les informations du XML et du XSD. P>
Ensuite, écrivez simplement les informations sur un fichier .java à l'aide de java.io. p>
Il existe des convertisseurs (XML à JSON) en ligne (tels que Celui-ci a >), donc il faisait. p>
Cependant, ce sont des programmes externes. Si vous voulez quelque chose de interne, je crains que vous n'ayez besoin de l'écrire vous-même. Juger de la question et vos commentaires Je suppose que vous le souhaitez comme faisant partie d'un programme et non comme un plugin pour IDE (ou je pourrais me tromper, corrigez-moi sinon) p>
XML à JSON ne devrait pas être très difficile à faire - lire tous les nœuds de nœuds et enfants de manière récursive (comment lire des nœuds d'enfants exemple ) et créez un fichier JSON à partir de celui-ci p>
Faire de XML à Java serait un peu plus délicate et pourrait avoir besoin d'une assistance (selon la façon dont vous voulez le faire) p>
Une approche tout à fait naïve serait de tout avoir comme des cordes. Donc
nom de chaîne = "tom"; code>, mais 30 serait
cordle Âge = "30"; code > aussi. Tout ce que "tout est une chaîne" approche nécessiterait une intervention humaine, car certains éléments peuvent être des chiffres à première vue, mais pourraient être des chaînes (par exemple, des bâtiments numéros: 1, 2, 3,
La bibliothèque de soussecore-java peut lire la chaîne XML sur une carte et générer JSON à partir de la carte de la carte. . Je suis le responsable du projet.
Msp<String, Object> map = U.fromXmlMap(xml); String json = U.toJson(map);
Relier? Exemple? Il utilise également les informations de la XSD ou une conversion par défaut standard?
J'ai ajouté un lien et un exemple.
Eh bien, merci, mais je dois utiliser le XSD pour générer une classe Java spécifique et non une carte générique.
Il semble que vous recherchiez ce Stackoverflow.com/a/7248944/1162620
Si je ne me trompe pas, vous demandez, si vous pouviez générer une classe Java à l'aide du code Java. Si c'est la chose, alors même mon commentaire reste pareil. Que cette pas b> bibliothèque externe, qui fait partie de JDK
@RAVI I explicitement i> b> a demandé à propos de la réflexion sans i> b> programmes externes, mais en utilisant uniquement le code Java.
@Ravi Vous pouvez poster le code Java ou simplement me diriger vers la documentation de l'API d'une bibliothèque qui fait ce que je cherche.
J'ai déjà pointé une bibliothèque pour vous
Laissez-nous Continuez cette discussion en chat .
Désolé, je ne sais rien d'autre, ce qui pourrait vous aider .. Alors, ne pas dire avoir de nouvelles discussions. Merci.
@Ravi: C'est incroyable ... vous avez bownvothed ma question et demanda de près parce que ce n'est pas clair. Ma question est très i> b> Clear: je veux faire ce que vous avez lié, mais pas avec ce programme externe, mais en utilisant Java. D'accord?
@Ravi En outre, je vous ai aimablement demandé de continuer la discussion dans une discussion privée, où j'ai essayé de vous expliquer mon point. Vous l'avez évité complètement. Je n'ai pas de mots.
Vous allez toujours utiliser JDK, si vous utilisez Java, pouvez-vous justifier, comment utiliser la bibliothèque JDK serait moins portable Je ne veux pas faire cela, car IMHO c'est moins portable. B> ? Et, vous vous attendez à écrire du code, si non, puis montrez-nous votre code, au lieu d'écrire une longue question. Être spécifique. Et c'est la raison, j'ai bownvote. Si cela vous inquiète, vous modifiez votre question afin que je revienne mon vote. Merci
@RAVI: Le lien que vous avez posté affiche un exemple qui utilise un programme externe et non une bibliothèque JDK. Peut-être que vous avez mal le lien, je ne sais pas. Quoi qu'il en soit, je ne peux pas poster le code car je n'ai rien à poster! Je ne sais pas comment faire cette chose et poster le code précédent qui fait quelque chose de quelque chose de complètement inutile. Je pense que j'étais très précis, j'ai décrit mon vrai problème dans les détails et j'ai demandé une solution. Je n'ai jamais demandé au code. Je répète, si vous voulez poster le lien vers l'API dont j'ai besoin, comme l'ayé quelquega, vous êtes libre de le faire. Et je ne sais pas vraiment comment puis-je améliorer ma question, sérieusement.