"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Qual implementação do analisador sax, `org.xml.sax` ou` Android.sax`, é melhor para minhas necessidades de análise XML?

Qual implementação do analisador sax, `org.xml.sax` ou` Android.sax`, é melhor para minhas necessidades de análise XML?

Postado em 2025-02-24
Navegar:551

Which SAX Parser Implementation, `org.xml.sax` or `android.sax`, Is Best for My XML Parsing Needs?

como analisar XML usando o parser sax

ao usar o sax para analisar documentos XML, existem duas implementações principais a serem consideradas: org. XML.SAX e Android.Sax. Cada implementação tem suas próprias vantagens e desvantagens. Requer manualmente os ouvintes de eventos para diferentes eventos XML, como elementos de partida/final e dados de caracteres. Embora essa abordagem ofereça mais flexibilidade, ela pode levar a um código mais detalhado e repetitivo. // Inicialize Pojos (objetos java antigos simples) para armazenar dados XML canal de canal privado; itens privados itens; item particular item; private boolean initem = false; Conteúdo privado de stringbuilder; @Override public void startElement (string uri, string localName, string qname, atributos atts) lança saxException { Content = new StringBuilder (); if (localName.equalsignorecase ("canal")) { canal = novo canal (); } else if (localName.equalsignorecase ("item")) { initem = true; item = novo item (); } } // ... Os ouvintes do evento restantes ... }

android.sax implementation

A implementação Android.sax simplifica a análise definindo a estrutura XML antecipada usando o RootElement e o Element Objects. Os ouvintes de eventos são adicionados a esses elementos para lidar com padrões de dados específicos. Essa abordagem reduz a repetição do código, mas requer uma estrutura XML bem definida. // POJOS para armazenar dados XML canal de canal privado; itens privados itens; item particular item; Public Exple () { itens = novos itens (); } // Adicionar ouvintes de eventos para eventos de elemento // ... código restante ... }

public class ExampleHandler extends DefaultHandler {

    // Initialize POJOs (Plain Old Java Objects) to store XML data
    private Channel channel;
    private Items items;
    private Item item;
    private boolean inItem = false;

    private StringBuilder content;

    @Override
    public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException {
        content = new StringBuilder();
        if (localName.equalsIgnoreCase("channel")) {
            channel = new Channel();
        } else if (localName.equalsIgnoreCase("item")) {
            inItem = true;
            item = new Item();
        }
    }

    // ... Remaining event listeners ...
}
comparação

contras: flexibilidade limitada em lidar com XML complexo XML Structures

public class Example extends DefaultHandler {

    // POJOs to store XML data
    private Channel channel;
    private Items items;
    private Item item;

    public Example() {
        items = new Items();
    }

    // Add event listeners for element events
    // ... Remaining code ...
}

pros: maior flexibilidade, mais adequado para estruturas XML complexas

constricional: Verboso e repetitivo Code

    conclusão
  • A escolha entre Android.sax e org.xml.sax depende da complexidade da estrutura XML e da flexibilidade desejada. Para estruturas XML simples e bem definidas, o Android.Sax oferece uma abordagem de análise simplificada. Para estruturas mais complexas com níveis variados de tags repetidas, o org.xml.sax fornece maior controle com seu manuseio de eventos de baixo nível 机制.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3