Pergunta

Atualmente, estou usando o Jdom para fazer uma análise XML simples, e parece que o tipo de nada de nada - tive um problema semelhante ao usar o analiser Java Dom embutido, apenas com muito mais API para percorrer.

Por exemplo, XPath.selectNodes leva um Object Como seu argumento e retorna uma lista bruta, que parece um pouco Java 1.1

Existem bibliotecas XML e XPath genéricas para Java, ou há algum motivo para que não seja possível fazer consultas XPath de maneira segura de tipo?

Foi útil?

Solução

Se você está familiarizado com os seletores CSS no HTML, pode ser bom saber que JSUP Suporta o XML também.


Atualizar: Ok, isso recebeu a votação descendente aparentemente uma resposta muito controversa. No entanto, pode ser mais fácil e menos detalhado que o XPath quando tudo o que você deseja é selecionar valores do nó. A API do JSUP é muito escorregadia. Vamos dar um exemplo um pouco mais concreto. Supondo que você tenha um arquivo XML que se parece assim:

<?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>

Então você pode atravessar como segue:

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());
}

quais saídas

Jane Doe
Main street 1
Park Avenue 1

Atualização 2: Desde o JSUP 1.6.2, lançado em março de 2012, a análise XML é oficialmente apoiada pela JSUP API.

Outras dicas

AFAIK Todas as consultas XML em Java são não-tipes e a maioria é compatível com Java 1.3. Dito isto, meu analisador/gerador favorito é o XML Pull Parser (xmlpp) Analisador de estilo. Acredito que o Java possui o XMLStreamReader e o XMLStreamWriter se você estiver usando 1.6, que são quase os mesmos da biblioteca XMLPP. Gosto especialmente que eu possa escrever um método getFoo que pega um leitor de fluxo e retire e retorna um objeto Foo. É o melhor entre DOM e Sax. Eu acho que pode ser chamado de Stax por alguns.
Estou ficando um pouco passeio, então estou desistindo agora

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top