Abaixo está um teste de leitura XML que eu mesmo escrevi
Copie o código do código da seguinte forma:
importar java.util.Iterator;
importar java.io.BufferedReader;
importar java.io.File;
importar java.io.IOException;
importar java.io.InputStreamReader;
importar java.net.MalformedURLException;
importar org.dom4j.*;
importar org.dom4j.io.SAXReader;
classe pública XmlRead{
static StringBuilder sBuilder = new StringBuilder();
public static void main(String[] args) lança IOException {
BufferedReader bReader = new BufferedReader(new InputStreamReader(
Sistema.in));
String caminho = nulo;
System.out.println("Por favor, insira o caminho absoluto e o nome do arquivo XML:/n");
caminho = bReader.readLine();
sBuilder.append("Iniciar a saída do conteúdo do arquivo XML/n");
Documento documento = nulo;
tentar {
documento = leitura(caminho);
sBuilder.append(caminho + "/n");
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}
Elemento raiz = getRootElement(documento);
if (raiz == nulo) {
System.out.print("O nó raiz não foi obtido");
retornar;
}
// Obtém o formato de codificação do documento XML
String encString = document.getXMLEncoding();
sBuilder.append("<?xml version=/"1.0/" codificação=/"" + encString
+ "/">/n");
sBuilder.append(elementText(root, attText(root), 0));
System.out.println(getIterator(root, 0) + "</" + root.getName() + ">");
}
/**
* Nó recursivo
*
* @descrição
* Elemento @param
* @param nível
* Nível
* @retornar
*/
private static String getIterator (Elemento elemento, int lvl) {
nível += 1;
for (Iterador i = element.elementIterator(); i.hasNext();) {
Elemento e = (Elemento) i.next();
sBuilder.append(elementText(e, attText(e), lvl));
getIterator(e, nível);
contagem int = e.nodeCount();
if (contagem > 0) {
for (int j = 0; j < nível; j++) {
sBuilder.append(" ");
}
}
sBuilder.append("</" + e.getName() + ">/n");
}
retornar sBuilder.toString();
}
/**
* Obtenha o valor da string do atributo do nó atual
*
* @descrição
* Elemento @param
* Nó atual
* @retornar
*/
private static String attText(Elemento elemento) {
Stringstr = " ";
for (int i = 0; i < element.attributeCount(); i++) {
Atributo atributo = element.attribute(i);
str += atributo.getName() + "=/"" + atributo.getValue() + "/" ";
}
retornar string;
}
/**
* Obtenha o valor do texto do elemento atual
*
* @descrição
* Elemento @param
* Nó Elemento Atual
* @param texto
* valor do atributo
* @param nível
* Nível
* @retornar
*/
private static String elementText(Elemento elemento, String texto, int lvl) {
Stringstr = "";
for (int i = 0; i < nível; i++) {
st += " ";
}
str += "<" + element.getNome();
if (texto! = null && texto! = "") {
str += texto;
}
//Como não há atributo ou método hasChild em dom4j, o método nodeCount() deve ser usado para determinar quando há nós filhos.
contagem int = element.nodeCount();
if (contagem == 0) {
retornarstr += ">";
}
retornarstr += ">/n";
}
/**
*
* @description Ler arquivo XML
* @param arquivo
* Caminho do arquivo XML, incluindo nome do arquivo
* @return Documento documento
* @throws MalformadoURLException
* @throws DocumentException
*/
Leitura de documento estático público (arquivo String) lança MalformedURLException,
DocumentException{
Leitor SAXReader = novo SAXReader();
Documento documento = leitor.read(new Arquivo(arquivo));
documento de devolução;
}
/**
* Obtenha o nó raiz do documento Documento
*
* @param documento
* @retornar
*/
elemento estático público getRootElement (documento do documento) {
retornar document.getRootElement();
}
}