Pergunta

O que você está usando para XML obrigatório para Java? JAXB, Castor e XMLBeans são algumas das opções disponíveis. As comparações que eu vi são todos os três ou quatro anos de idade. Estou aberto a outras sugestões. Marshalling / performance unmarshalling e facilidade de utilização são de particular interesse.

Esclarecimento:. Eu gostaria de ver não apenas o quadro que você usa, mas seu raciocínio para usar um sobre os outros

Foi útil?

Solução

JiBX . Anteriormente eu usei Castor XML , mas JiBX provou ser significativamente melhor, especialmente em termos de desempenho (a porta reta de algum código de aplicação de Castor XML para JiBX tornou 9x mais rápido). Eu também achei o formato de mapeamento para JiBX para ser mais elegante do que Castor de.

JiBX atinge seu desempenho usando manipulação de bytecode pós-compilação em vez da abordagem reflexão adotado por Castor. Isto tem a vantagem de que ele coloca menos exigências sobre a maneira que você escreve suas classes mapeadas. Não há necessidade de getters, setters e construtores no-arg apenas para satisfazer as ferramentas. Na maioria das vezes você pode escrever a classe sem considerar questões de mapeamento e, em seguida, mapeá-lo sem modificações.

Outras dicas

Se você quiser tomar uma decisão informada você precisa estar claro por que você está traduzindo entre objetos XML e Java. A razão é que as diferentes tecnologias neste espaço tentar resolver problemas diferentes. As diferentes ferramentas se enquadram em duas categorias:

  1. ligação de dados XML - refere-se ao processo de representar as informações em um documento XML como um objeto na memória do computador. Tipicamente, isto significa definir um XSD e a geração de um código-fonte Java equivalente. Interop entre diferentes linguagens é prioridade máxima (daí o uso de XSD) -. Mais tipicamente para a implementação de serviços Web baseados em SOAP
  2. serialização XML - refere-se a escrever um gráfico de em objetos de memória para um fluxo, de modo que possa ser reconstituído em algum lugar ou em algum outro lugar. Você escreve as classes Java com a mão; a representação XML é de importância secundária. Além disso, a necessidade de desempenho é muitas vezes maior ea necessidade de interoperabilidade com outras linguagens como .NET é muitas vezes menor.

Para a serialização XML, Xstream é difícil de bater. JAXB é o padrão para XML vinculativo.

Em qualquer caso, se você estiver usando J2EE você precisa prestar muita atenção a classes recuperados do JPA desde proxies classe e tipos de coleção persistência específicos pode confundir ligação / ferramentas de serialização.

Se você tem um XSD para o XML, e você não precisa ligar os dados a um conjunto existente de aulas, então eu realmente gosto XMLBeans . Basicamente, funciona assim:

  • Compilar XSD
  • Use as classes Java para ler documentos / gravação em conformidade com este esquema gerado

Binding um documento XML para as classes geradas é tão simples como:

EmployeesDocument empDoc = EmployeesDocument.Factory.parse(xmlFile); 

xstream . Marshalling / unmarshalling é trivial. Consulte a sua tutorial para exemplos.

jibx é o que é usado por aqui. É muito rápido, mas as ligações podem ser um pouco complicado. No entanto, é especialmente útil se você tem esquemas XML descrevendo seus objetos de domínio, como ele realmente mapeia bem para XSD (há ainda uma ferramenta beta XSD2Jibx que pode levar XSDs e criar classes stub de domínio e mapeamentos, que você pode então tomar e coaxial para se encaixam no seu modelo de domínio existente).

Ele manipula bytecode, por isso deve ser executado após a compilação inicial dos arquivos .class Java. Você pode usar o plugin Maven para ele, ou apenas usá-lo diretamente (o plugin Eclipse não parece trabalhar para mim).

Eu usei JAXB com sucesso variável. Na época (a par de anos atrás) a documentação geral foi medíocre ea documentação uso básico (incluindo onde baixar implementações) foi difícil de encontrar ou variado.

O analisador que escreveu as classes Java foi muito bom, com pouca discrepância contra o XSD original (embora eu acho que tinha problemas de suporte XML elementos abstratos).

Eu não tê-lo usado desde então, mas eu tenho um próximo projeto que vai exigir apenas como um quadro e eu vou estar interessado em saber como qualquer outra pessoa feiras com o acima.

Eu costumava rícino 7 anos atrás - ele funcionou muito bem. DTD usados. Não muitas opções nesse momento.


Em projetos atuais, eu usei 1) JAXB - baseada em padrões, a implementação de referência disponíveis, linha de comando e ferramentas de formigas disponíveis. última versão -. 2.1.8 necessidades java 5+
2) XStream - para Soap unmarshalling - precisa de Java 5 +. Não é tão rápido e compatível com as normas como JAXB mais recente.

BR,
~ A

correlacionadas: em Java

XMLBeans é uma boa escolha especialmente se você tem 'quebrado' XSD / arquivos WSDL.

Don mencionado

= EmployeesDocument empDoc EmployeesDocument.Factory.parse (xmlFile);

.. mas também pode dar um nó ou um arquivo, ou apenas sobre qualquer fonte.

No combate com namespaces, atravessar para o objeto que você deseja desempacotar, e Factory.parse-lo.

desejo que eu tinha encontrado há 2 semanas.

Nós usamos Castor. Ele se adapte às nossas necessidades muito bem.

Eu estava pensando exatamente a mesma pergunta, e, finalmente, eu encontrei este testes de desempenho realizados pela IBM. http://www.ibm.com/developerworks/library/x-databdopt2/ . JiBX é a minha escolha eu acho, hehe.

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