Leia o arquivo xml local e analise-o por meio do DOM. A característica da análise do DOM é carregar todo o arquivo xml na memória para formar uma estrutura em árvore do DOM.
A característica da análise DOM é ler o arquivo xml e convertê-lo em uma estrutura de árvore dom e percorrer os nós.
Este é o conceito de nós do W3c
Se o XML contiver uma grande quantidade de dados, o DOM não será adequado para analisar XML contendo uma grande quantidade de dados devido à característica de carregar o XML na memória de uma só vez. Quando uma grande quantidade de xml é incluída, a análise com SAX economiza memória.
A seguir está um exemplo de uso do DOM para analisar arquivos XML:
A estrutura do arquivo xml é a seguinte:
<?xml version="1.0" encoding="ISO-8859-1"?><bookstore> <book category="cooking"> <title lang="en">Italiano diário</title> <author>Giada De Laurentiis </author> <year>2005</year> <price>30,00</price> </book> <book category="children"> <title lang="en">Harry Potter</title> <author>J K. Rowling</autor> <ano>2005</ano> <price>29,99</price> </book> <book category="web"> <title lang="en">XQuery Kick Start</title> <author>James McGovern</ autor> <ano>2003</ano> <price>49,99</price> </book> <book category="web" cover="paperback"> <title lang="en">Aprendendo XML</title> < autor>Erik T. Ray</autor> <ano>2003</ano> <price>39,95</price> </book></bookstore>
Crie uma classe para analisar xml da seguinte forma:
pacote xml.dom;importar java.io.File;importar javax.xml.parsers.DocumentBuilder;importar javax.xml.parsers.DocumentBuilderFactory;importar org.w3c.dom.Document;importar org.w3c.dom.Element;importar org .w3c.dom.Node;importar org.w3c.dom.NodeList;classe pública ReadXmlFile { public static void main(String[] args) { try{ Arquivo xmlFile = new File("src/resource/book.xml"); Documento doc=builder.parse(xmlFile); doc.getDocumentElement().normalize(); System.out.println("Elemento raiz: "+doc.getDocumentElement().getNodeName()); 0 ; i<nList.getLength();i++){ Nó nó = nList.item(i); System.out.println("Nome do nó: "+ node.getNodeName()); ------------"); if(node.getNodeType() == Element.ELEMENT_NODE){ System.out.println("categoria do livro: "+ ele.getAttribute("category")) ; System.out.println("nome do título: "+ ele.getElementsByTagName("título").item(0).getTextContent()); System.out.println("nome do autor: "+ele.getElementsByTagName("autor").item(0).getTextContent()); System.out.println("ano :"+ele.getElementsByTagName("ano").item(0).getTextContent()); System.out.println("preço: "+ele.getElementsByTagName("preço").item(0).getTextContent() ); System.out.println("------------------------");
Resultados da análise:
Elemento raiz: livrariaNome do nó: livro--------------------------categoria do livro: culinárianome do título: Italiano cotidianonome do autor: Giada De Laurentiisano: 2005preço: 30,00 -------------------------Nome do nó: livro------------------ --- -------categoria do livro: criançasnome do título: Harry Potternome do autor: J K. Rowlingano: 2005preço: 29,99----------------------- -- Nome do nó: livro--------------------------categoria do livro: nome do título da web: XQuery Kick Startauthor nome: James McGovernano: 2003preço: 49,99----------------------------Nome do nó: livro------------- ---------------categoria do livro: nome do título da web: Learning XMLnome do autor: Erik T. Rayano:2003preço: 39,95----------------- --------
O acima é obter o valor correspondente através do nome.
A saída a seguir é feita usando nós de loop:
O código para o modo de saída do nó de loop é o seguinte:
pacote xml.dom;importar java.io.File;importar javax.xml.parsers.DocumentBuilder;importar javax.xml.parsers.DocumentBuilderFactory;importar org.w3c.dom.Document;importar org.w3c.dom.NamedNodeMap;importar org .w3c.dom.Node;importar org.w3c.dom.NodeList; public class ReadXmlFile2 { public static void main(String[] args) { try{ Arquivo xmlFile = new File("src/resource/book.xml"); ;Construtor DocumentBuilder = construtorFactory.newDocumentBuilder(); construtor.parse(xmlFile); doc.getDocumentElement().normalize(); System.out.println("Elemento raiz: "+doc.getDocumentElement().getNodeName()); (doc.getChildNodes()); printNode(NodeList nodeList){ System.out.println("------------------------"); getLength()); for(int i = 0; i<nodeList.getLength(); i++){ Nó nó = (Nó)nodeList.item(i); System.out.println("nome do nó: "+node.getNodeName()); System.out.println("valor do nó: "+node.getTextContent()); node.getAttributes(); for(int j = 0; j < nodeMap.getLength(); j++){ Nó nodenew = nodeMap.item(j); System.out.println("nome do nó "+nodenew.getNodeName()); System.out.println("valor do nó "+nodenew.getNodeValue()); ()){ printNode(node.getChildNodes());
A saída é a seguinte:
Elemento raiz: livraria ------------- nome do nó: bookstorenode valor: Everyday Italian Giada De Laurentiis 2005 30,00 Harry Potter J K. Rowling 2005 29,99 XQuery Kick Start James McGovern 2003 49,99 Aprendendo XML Erik T. Ray 2003 39,95 ------------------nome do nó: valor do booknode: Italiano diário Giada De Laurentiis 2005 30.00 nome do nó categoriavalor do nó culinária-----------------------nome do nó: valor do títulonode: Italiano diárionome do nó valor langnode en------- ------------------nome do nó: valor do nó do autor: Giada De Laurentiis----------------------- - nome do nó: valor do ano: 2005 ------------------------ nome do nó: valor do preço do nó: 30,00----------- - ------------ nome do nó: valor do nó do livro: Harry Potter J K. Rowling 2005 29.99 nome do nó categoria valor do nó filhos ------------------------ nome do nó: valor do título node: Harry Potter nome do nó valor do langnode en -------- ----------------nome do nó: valor do nó do autor: J K. Rowling------------------------ -------- nome do nó: valor do ano: 2005 ---------nome do nó: valor do preço: 29,99 ---- -------- ------------ nome do nó: valor do booknode: XQuery Kick Start James McGovern 2003 49,99 nome do nó valor do nó da categoria web-----------------------nome do nó: valor do nó do título: XQuery Kick Startnome do nó valor do nó langnode en---------- ---------------nome do nó: valor do nó do autor: James McGovern--------------------------nó nome: valor do anonode: 2003--------------------------------nome do nó: valor do nó de preço: 49,99----- ----------- -------- nome do nó: valor do booknode: Learning XML Erik T. Ray 2003 39,95 nome do nó valor do nó da categoria nome do webnode covernode value brochura-------------node name: titlenode value: Learning XMLnode name langnode value en---------- - ------------nome do nó: valor do nó do autor: Erik T. Ray--------------------------nome do nó : valor do ano: 2003 ------------- nome do nó: valor do nó de preço: 39,95 -------------- -----------
Perguntas sobre nós:
<book Category="cooking"> <title lang="en">Italiano do dia a dia</title> <author>Giada De Laurentiis</author> <ano>2005</ano> <price>30,00</price> </ livro>
Para aplicativos de livros: doc.getChildNodes() obtém um NodeList onde o comprimento do NodeList é 9
Os 9 nós são os seguintes:
nó de título
nó lang
Nó diário
nó autor
Nó Giada De Laurentiis
nó do ano
Nó de 2005
nó de preço
30h00 nó