1. Entenda a tecnologia XML Parsing
1.1. Conceitos relacionados ao XML
(1) DTD: regras de sintaxe XML, que são o mecanismo de verificação dos arquivos XML. Você pode comparar documentos XML com os arquivos DTD para verificar se o documento está cumprindo as especificações e se os elementos e etiquetas são usados corretamente.
(2) XML é a base da SOA.
1.2. Tecnologia de processamento XML
(1) Para usar o XML, precisamos acessar dados por meio de um processador XML ou XMLAPI. Atualmente, o JAXP fornece dois métodos para processar XML: DOM e Sax.
① DOM: DOM acessa dados e estruturas em documentos XML programaticamente, com base na estrutura da árvore dos documentos XML na memória. A desvantagem é que ele requer muita sobrecarga para carregar todo o documento XML na memória.
②Sax: Com base no acionamento por eventos, um segmento é usado para analisar um segmento, que resolve o problema de Dom ocupando muita memória, mas sua desvantagem é que ele não pode acessar documentos aleatórios.
(2) Para resolver os problemas de DOM e Sax, apareceu um StreamApiforXML baseado em fluxo (STAX para curta). Foi adicionado ao JAXP1.4 do JDK6 e o Stax também é orientado a eventos.
(3) DOM, SAX e STAX Todo o processo XML da estrutura do documento, mas muitos aplicativos se concentram apenas nos próprios dados do documento, de modo que a tecnologia de ligação de dados XML surgiu.
Ligação de dados: refere -se ao processo de extração de dados de mídia de armazenamento (documentos e bancos de dados XML) e representando esses dados por meio de programas, ou seja, vinculando os dados a uma estrutura de memória que a máquina virtual pode entender e operar.
Estrutura de ligação ao XML: Castor, Jaxb, Jibx, Quick, Zeus, etc.
2. Ferramenta de processamento XML: Xstream
2.1. Visão geral do Xstream
(1) O XStream é uma estrutura de código aberto simples e fácil de usar para serializar objetos Java em XML ou desserralizar XML em objetos Java. Principais recursos do XStream:
(2) Composição da arquitetura Xstream:
Conversores: Quando o XStream encontra um objeto que precisa ser convertido, ele é delegado à implementação do conversor apropriado.
IO (entrada/saída): O XStream é abstraído dos dados XML subjacentes através do Hierárquico -Criter e Hierárquico, e é usado para operações de serialização e desserialização, respectivamente.
Contexto: Quando o XStream serializa objetos de desserialização, são criadas duas classes marshallingcontext e unarshallingContext, e o portão da torre processa os dados e os delega para o conversor apropriado.
Fachada (entrada unificada): integre os 3 pontos acima e abra -os aos usuários com uma interface unificada.
2.2. Início rápido
(1) Crie um Xstream e especifique um analisador XML
XStreamxStream = newxStream (newDomdriver ());
Se você não especificar um analisador, o XStream usará o analisador XPP (XMLPullParser) por padrão, que é um analisador de alta velocidade.
(2) Os exemplos são os seguintes:
2.3. Use o alias xstream
(1) No exemplo acima, o nome completo da classe do objeto Java corresponde ao elemento raiz do arquivo XML e o nome do atributo corresponde ao elemento do nó do arquivo XML. No entanto, em situações reais, tanto o objeto Java quanto o objeto XML podem já ter nomes definidos, para que o mapeamento de alias seja necessário.
Xstream tem 3 configurações de alias:
Nome da categoria: use alias (stringname, classtype).
Alias do membro da classe: Use Aliasfield (Stringalias, ClassDefinedIn, StringFieldName).
Os membros da classe são usados como alias de atributo: use aliasattribute (ClassDefinedIn, StringAttributename, Stringalias), e nomeá -los por si só não tem significado e também devem ser aplicados a uma determinada classe através do USEATIBUTION (ClassDefinedIn, StringFieldName).
(2) Modifique o exemplo em 2.2 por meio de alias:
2.4. Conversor xstream
Durante o processo de desenvolvimento, às vezes você precisa converter alguns tipos personalizados. Basta implementar a interface do conversor e chamar o método RegisterConverter () do XStream para registrar o conversor.
2.5. Anotação XStream
(1) As anotações comuns para XStream são as seguintes:
(2) Use
XStreamxStream = newxStream (newDomdriver ());
Existem 2 maneiras de carregar objetos:
Method 1:
xstream.processannotações (aaa.class);
xstream.processannotações (bbb.class);
② Método 2:
xStream.autodetectAnnotações (true); // Carregar automaticamente o feijão anotado e também armazena em armazenamento o objeto anotado.
2.6. Objetos fluidos
(1) O XStream fornece implementações alternativas para o ObjectInputStream e o ObjectOutputStream, permitindo operações de serialização ou deserialização XML na forma de fluxos de objetos. O anterior é o XML lido pelo analisador XML baseado em DOM; aqui devemos obviamente usar o método de fluxo para análise.
Exemplos são os seguintes:
(2) A diferença entre o uso do PrettyWriter e o CompactWriter é que o PrettyWriter formatará o XML gerado, enquanto o CompactWriter compactará o XML gerado.
2.7. API de persistência
(1) O XStream fornece uma maneira simples de persistir objetos na coleção em arquivos, como: XMLARRAYLIST, XMLSET, XMLMAP, etc.
(2) Antes de criar uma coleção, você também precisa especificar uma estratégia de estratégia de persistência.
2.8. Lidar com JSON
(1) O XML tem uma posição inabalável no WebService, mas na maioria dos aplicativos da Web, o JSON leve ainda é usado como formato de troca de dados.
(2) O XStream fornece JettisonMapDXMLDRIVER e JSONHIERARCHICALSTREAMDRIVER para completar a conversão de objetos Java e JSON.
Exemplos são os seguintes:
(3) A diferença entre JettisonMapDXMLDRIVER e JSONHIERARCHICALSTREAMDRIVER:
①JettisonMapDxMldRiver gera JSON compactado, enquanto o JSONHIERARCHICALSTREAMDRIVER gera JSON formatado.
② Se você deseja converter o JSON em um objeto, só poderá usar o JettisonMapDxmldRiver.
3. Outros projetos comuns de código aberto o/xmapping
Comparação de Jaxb, XmlBeans, CSTOR, JIBX:
4. Integração com Springoxm
4.1. Visão geral do Springoxm
(1) Springoxm fez uma abstração unificada e encapsulamento da estrutura O/XMapping convencional. Marshaller e Unarshaller são as duas interfaces principais da Springoxm. Marshaller é usado para converter objetos em XML, e o UNSARSHALLER é usado para converter XML em objetos.
(2) Os invólucros de componentes O/XMapping são os seguintes:
4.2. Configure na primavera
(1) Instância de configuração XSTEAMMARSHALLER:
5. Resumo
(1) A ligação de dados XML dos aplicativos Java pode ser resumida de 2 maneiras:
Gere o código de idioma Java (como JAXB, XMLBEANS, CASTOR) com base nos documentos XML.
Use alguma forma de método de ligação de mapeamento, ou seja, defina como as classes Java estão associadas ao XML (como XSTREAM, CASTOR, JIBX).
(2) Comparação de 2 maneiras:
Usando uma estrutura estável de documentos definida pelo esquema ou DTD, e a estrutura é adequada para as necessidades do aplicativo, um método de geração de código pode ser a melhor escolha.
Se você usar uma classe Java existente ou se deseja usar uma estrutura de uma classe que reflita o uso de dados do aplicativo, em vez de uma estrutura XML, o método de mapeamento é a melhor escolha.
Resumir
O exposto acima é sobre a primavera usando OXM para análise de mapeamento XML do Objeto. Espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!