2010-03-27 4 views
-1

Je suis assez nouveau à Java et écris une application qui a besoin d'un fichier de configuration XML. Le problème que j'ai, c'est qu'il n'y a pas de moyen facile de le faire, ce qui me semble un peu étrange. J'ai regardé SAX et DOM et les deux semblent assez compliqués. Y a-t-il d'autres bonnes API? Quelle est la meilleure façon de faire cela en Java? Merci ...Existe-t-il un moyen facile de lire un fichier XML en Java?

+2

Beaucoup de dupes. En voici un récent avec une question bien formatée: http://stackoverflow.com/questions/2333479/how-to-read-an-xml-file-with-java – kdgregory

+0

Il y a beaucoup d'API XML à lire en XML, voir ce lien http://stackoverflow.com/questions/373833/best-xml-parser-for-java –

+0

Oui, c'est facile si vous avez déjà appris l'API. – peterh

Répondre

1

J'ai écrit une API très simple précisément pour cette raison. Il utilise l'analyseur DOM ci-dessous, mais expose une API très simple et facile à utiliser qui vous permet d'accéder facilement aux données XML. C'est juste un fichier Java unique que vous pouvez utiliser comme bibliothèque dans votre code. J'espère que cela pourra aider.

http://argonrain.wordpress.com/2009/10/27/000/

+0

Merci à tous pour vos réponses. Configuration Commons semble assez bon et semble assez puissant, cependant, à la fin, j'ai décidé d'utiliser cette solution dans mon application. La seule chose négative à propos de Commons Configuration est que c'est assez lourd pour juste un peu de config. Cette solution est vraiment légère et fait tout ce dont j'ai besoin. Merci beaucoup pour le lien! –

0

SAX et DOM sont les moyens "standard" d'approcher l'analyse d'un fichier XML en Java.

Il existe également des alternatives à XML.

Peut-être que tout ce dont vous avez besoin est un fichier de propriétés?

Avez-vous considéré JSON?

1

Vous pouvez jeter un oeil sur that list pour les sérialiseurs xml et les désérialiseurs.

Je suggère la classe jdk XmlEncoder + XmlDecoder, xstream ou simple.

1

Je recommande la bibliothèque de configuration de Commons: http://commons.apache.org/configuration/index.html Jetez un coup d'œil aux HOWTO pour voir comment il est facile d'obtenir des informations à partir d'un fichier XML.

Toutes les autres libs que je connais impliquent d'opérer directement sur le DOM ou d'enregistrer des gestionnaires pour l'analyse syntaxique SAX (qui impliquent tous les deux une charge de code élevée). JAXB est également une alternative, mais n'implique pas moins de code de frais généraux que les deux premiers.

Max

+0

Ouais, et bien sûr: Vous devriez envisager d'utiliser sth. autre que XML si vous ne voulez pas vraiment tirer parti des capacités XML. Les fichiers de propriétés sont les plus simples des alternatives. – Makkes

0

Une belle alternative à l'analyse du fichier vous-même (en particulier pour la configuration) est d'utiliser Apache Commons Digester.

Vous nommez simplement les parties du fichier XML qui déclencheront les setters/méthodes dont vous avez besoin, et Digester fera le reste. Vous pouvez construire des configurations arbitrairement complexes et le code 'parsing' reste trivial.

par exemple.

digester.addObjectCreate("addresses/address", Address.class); 
    digester.addBeanPropertySetter("addresses/address/addressLine1", "addressLine1"); 

crée un objet Address et définit la première ligne de l'adresse. Voir this tutorial pour plus d'informations.

La variante XStream offre (peut-être) la conversion XML-objet la plus simple disponible en Java. Pour créer une instance d'une classe (par exemple) Configuration à partir d'un flux d'entrée est une opération d'une ligne.

1

« Je suis assez nouveau pour Java ... il ne semble pas être un moyen facile de faire, ce qui semble un peu étrange. » C'est un vieux post. Maintenant que vous utilisez Java depuis 4 ans, êtes-vous toujours surpris quand il est difficile de faire des choses simples?:)

J'ai commencé avec le JDK, et j'ai construit ma propre classe XmlHelper. C'est petit et simple. Chaque fois que je me retrouve à écrire le même code encore et encore, il est copié dans cette classe. Cela m'a rendu la vie beaucoup plus facile. http://marketmovers.blogspot.com/2014/02/the-easy-way-to-read-xml-in-java.html

Questions connexes