Melhor analisador de XML para Java [fechado]
Preciso de ler em smallish (poucos MB no máximo, codificados em UTF-8) ficheiros XML, procurar vários elementos e atributos, talvez modificar alguns e escrever o XML de novo para o disco (de preferência com formatação agradável e indentada).
Qual seria o melhor analisador XML para as minhas necessidades? Há muito por onde escolher. Alguns que conheço são:e, claro, o do JDK (estou a usar o Java 6). Conheço o Xerces, mas acho-o desajeitado.
recomendações?
8 answers
Se a velocidade e a memória não são problemas, o dom4j é uma boa opção. Se você precisa de Velocidade, usar um analisador StAX como Woodstox é o caminho certo, mas você tem que escrever mais código para fazer as coisas e você tem que se acostumar a processar XML em fluxos.
- saxofone Esta é a API mais simples. Você lê o XML definindo uma classe de manipulador que recebe os dados dentro dos elementos/atributos quando o XML é processado de uma forma serial. É mais rápido e simples se você só planeja ler alguns atributos / elementos e / ou escrever alguns valores de volta (seu caso).
- DOM este método cria uma árvore de objectos que lhe permite modificá-la/acedê-la aleatoriamente, para que seja melhor para manipulação e manipulação complexas de XML.
- StAX Isto está no meio de o caminho entre SAX e DOM. Você só escreve código para puxar os dados do analisador que você está interessado quando ele é processado.
Esquecer APIs proprietárias como o JDOM ou Apache queridos (i.e. Apache Xerces XMLSerializer) porque vai amarrá-lo a uma implementação específica, que pode evoluir no tempo ou perder a compatibilidade com versões anteriores, que vai fazer você mudar o seu código no futuro, quando você deseja atualizar para uma nova versão do JDOM ou qualquer que seja o analisador utiliza. Se ficar para a API padrão Java (usando fábricas e interfaces) o seu código será muito mais modular e sustentável.
Não há necessidade de dizer que todos (Eu não verifiquei todos, mas tenho quase certeza) dos parsers propostos cumprem uma implementação JAXP então tecnicamente você pode usar todos, não importa qual.Característica StAX sax DOM TrAX
Tipo de API puxar, enviar para streaming, enviar para a árvore de memória XSLT Regra
Facilidade de Utilização elevada Média Elevada
Capacidade XPath Não Não Não Sim Sim
CPU & Memória O Bem Bom varia
Apenas Para A Frente Sim Sim Não Não
Ler XML Sim Sim Sim Sim Sim
Escrever XML Sim Não Sim sim
CRUD {[8] } Não Não Não Sim não
XML simples http://simple.sourceforge.net/ é muito fácil para (de)objectos em série.
Para além do SAX e DOM, existe uma análise de STaX disponível usando o XMLStreamReader que é um analisador de tracção xml.
Descobri que o dom4j é a ferramenta para trabalhar com o XML. Especialmente em comparação com o Xerces.
Eu não recomendaria isso é que você tem um monte de" pensar " no seu aplicativo, mas usando XSLT poderia ser melhor (e potencialmente mais rápido com a compilação XSLT-to-bytecode) do que a manipulação Java.
Se você se importa menos com o desempenho, Eu sou um grande fã do Apache Digester, uma vez que ele essencialmente permite mapear diretamente de XML para Java Beans.
Caso contrário, você tem que primeiro analisar, e então construir seus objetos.