Question

Je suis actuellement en utilisant JDOM pour faire une analyse syntaxique XML simple, et il semble que la sécurité de type de rien - j'ai eu un problème similaire à l'utilisation du haut-analyseur Java DOM, juste avec beaucoup plus API à patauger dans

Par exemple, XPath.selectNodes prend un Object comme argument et retourne une liste brute, qui se sent un peu Java 1.1

Y at-il XML-isé générique et les bibliothèques XPath pour Java, ou est-il une raison pour laquelle il est tout simplement pas possible de faire des requêtes XPath de manière type-safe?

Était-ce utile?

La solution

Si vous êtes familier avec les sélecteurs CSS sur HTML, il peut être bon de savoir que Jsoup prend en charge XML ainsi.


Mise à jour : OK, qui a été donné le downvote apparemment une réponse très controversée. Il peut finir cependant pour être plus facile et moins prolixe que Xpath quand on veut est de sélectionner des valeurs de nœud. L'API est Jsoup à savoir très lisse. Donnons un peu exemple plus concret. En supposant que vous avez un fichier XML qui ressemble à ceci:

<?xml version="1.0" encoding="UTF-8"?>
<persons>
    <person id="1">
        <name>John Doe</name>
        <age>30</age>
        <address>
            <street>Main street 1</street>
            <city>Los Angeles</city>
        </address>
    </person>
    <person id="2">
        <name>Jane Doe</name>
        <age>40</age>
        <address>
            <street>Park Avenue 1</street>
            <city>New York</city>
        </address>
    </person>
</persons>

Ensuite, vous pouvez parcourir comme suit:

Document document = Jsoup.parse(new File("/persons.xml"), "UTF-8");

Element person2 = document.select("person[id=2]").first();
System.out.println(person2.select("name").text());

Elements streets = document.select("street");
for (Element street : streets) {
    System.out.println(street.text());
}

dont les sorties

Jane Doe
Main street 1
Park Avenue 1

Mise à jour 2 :. Depuis Jsoup 1.6.2 qui a été publié Mars 2012, l'analyse syntaxique XML est officiellement pris en charge par l'API Jsoup

Autres conseils

AFAIK toutes les requêtes XML en java sont non-typesafe et la plupart sont compatibles java 1.3. Cela dit mon analyseur préféré / générateur est analyseur pull XML (xmlpp) analyseur de style. Je crois que java a XmlStreamReader et XmlStreamWriter si vous utilisez 1.6 qui sont à peu près les mêmes que la bibliothèque xmlpp. Je aime particulièrement que je peux écrire une getFoo méthode qui prend un lecteur de flux et de tractions et retourne un objet Foo. Il est en quelque sorte le meilleur entre DOM et SAX. Je pense qu'il peut être appelé StAX par certains.
Je suis un peu ramble-y donc je quitter maintenant

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top