DOM é uma ferramenta de análise poderosa adequada para documentos pequenos
Por que você diz isso? Porque carregará todo o documento xml na memória para formar uma árvore de objetos de documento
Resumindo, parece assustador, mas usá-lo para ler pequenas coisas é bastante conveniente em comparação com o Sax.
Quanto às operações de adição e exclusão, etc., não pretendo escrevê-lo. Quando estava assistindo ao tutorial, quase vomitei por causa do código feio.
É justamente por isso que ferramentas como jdom e dom4j existiram posteriormente...
Não há muito a dizer, basta ir ao código
Exemplo de análise Dom
importar javax.xml.parsers.DocumentBuilder;
importar javax.xml.parsers.DocumentBuilderFactory;
importar org.w3c.dom.Document;
importar org.w3c.dom.Element;
importar org.w3c.dom.NamedNodeMap;
importar org.w3c.dom.Node;
importar org.w3c.dom.NodeList;
demonstração de classe pública {
public static void main(String[] args) lança exceção {
//Cria uma instância de fábrica do analisador e gera um analisador
Fábrica de DocumentBuilderFactory = DocumentBuilderFactory.newInstance();
Construtor DocumentBuilder = factory.newDocumentBuilder();
//Cria o objeto de documento que precisa ser analisado
Arquivo f = novo Arquivo("livros.xml");
//Analisar o documento e retornar um objeto Document Neste momento, o documento xml foi carregado na memória.
//Ok, vamos tornar a análise mais intensa e o resto é obter os dados.
Documento doc = construtor.parse(f);
//Obtém o elemento raiz do documento
//Você me pergunta por que faço isso? Porque o próprio objeto do documento é uma estrutura em árvore e esta é a raiz da árvore.
//Claro, você também pode encontrar a coleção de elementos diretamente e omitir esta etapa
Raiz do elemento = doc.getDocumentElement();
//O nó raiz foi encontrado acima, e aqui começamos a obter a coleção de elementos sob o nó raiz.
lista NodeList = root.getElementsByTagName("livro");
for (int i = 0; i < list.getLength(); i++) {
//Encontre o nó na coleção através do método item() e converta-o em um objeto Element
Elemento n = (Elemento) list.item(i);
//Obtenha o mapa de atributos no objeto, use um loop for para extrair e imprimir
Nó NamedNodeMap = n.getAttributes();
for (int x = 0; x < node.getLength(); x++) {
Nó nn = node.item(x);
System.out.println(nn.getNodeName() + ": " + nn.getNodeValue());
}
//Imprime o conteúdo do elemento, o código é muito complicado, quase um formato fixo
System.out.println("título: " +n.getElementsByTagName("título").item(0).getFirstChild().getNodeValue());
System.out.println("autor: " + n.getElementsByTagName("autor").item(0).getFirstChild().getNodeValue());
System.out.println();
}
}
}
Resultado de saída: