Ниже приведен тест чтения XML, который я написал сам.
Скопируйте код кода следующим образом:
импортировать java.util.Iterator;
импортировать java.io.BufferedReader;
импортировать java.io.File;
импортировать java.io.IOException;
импортировать java.io.InputStreamReader;
импортировать java.net.MalformedURLException;
импортировать org.dom4j.*;
импортировать org.dom4j.io.SAXReader;
общественный класс XmlRead {
статический StringBuilder sBuilder = новый StringBuilder();
public static void main(String[] args) выдает IOException {
BufferedReader bReader = новый BufferedReader (новый InputStreamReader (
System.in));
Строковый путь = ноль;
System.out.println("Пожалуйста, введите абсолютный путь и имя файла XML:/n");
путь = bReader.readLine();
sBuilder.append("Начать вывод содержимого XML-файла/n");
Документ документ = ноль;
пытаться {
документ = читать (путь);
sBuilder.append(путь + "/n");
} catch (MalformedURLException e) {
е.printStackTrace();
} catch (DocumentException e) {
е.printStackTrace();
}
Корень элемента = getRootElement(document);
если (корень == ноль) {
System.out.print("Корневой узел не получен");
возвращаться;
}
// Получаем формат кодировки XML-документа
Строка encString = document.getXMLEncoding();
sBuilder.append("<?xml version=/"1.0/"coding="" + encString
+ "/">/n");
sBuilder.append(elementText(root, attText(root), 0));
System.out.println(getIterator(root, 0) + "</" + root.getName() + ">");
}
/**
* Рекурсивный узел
*
* @описание
* Элемент @param
* @param уровень
* Уровень
* @возвращаться
*/
частная статическая строка getIterator (Элемент элемента, int lvl) {
уровень += 1;
for (Итератор i = element.elementIterator(); i.hasNext();) {
Элемент e = (Элемент) i.next();
sBuilder.append(elementText(e, attText(e), lvl));
getIterator (е, уровень);
int count = e.nodeCount();
если (количество > 0) {
for (int j = 0; j < lvl; j++) {
sBuilder.append(" ");
}
}
sBuilder.append("</" + e.getName() + ">/n");
}
вернуть sBuilder.toString();
}
/**
* Получить строковое значение атрибута текущего узла
*
* @описание
* Элемент @param
* Текущий узел
* @возвращаться
*/
частная статическая строка attText (элемент элемента) {
Строка ул = " ";
for (int i = 0; i < element.attributeCount(); i++) {
Атрибут атрибута = element.attribute(i);
str += атрибут.getName() + "=/"" + атрибут.getValue() + "/" ";
}
вернуть ул;
}
/**
* Получить текстовое значение текущего элемента
*
* @описание
* Элемент @param
* Узел «Текущий элемент»
* @param текст
* значение атрибута
* @param уровень
* Уровень
* @возвращаться
*/
Private static String elementText (Элемент Element, String text, int lvl) {
Строка ул = "";
for (int я = 0; я <lvl; я++) {
ул += " ";
}
str += "<" + element.getName();
if (text != null && text != "") {
стр += текст;
}
//Поскольку в dom4j нет атрибута или метода hasChild, необходимо использовать метод nodeCount() для определения наличия дочерних узлов.
int count = element.nodeCount();
если (счет == 0) {
вернуть стр += ">";
}
return str += ">/n";
}
/**
*
* @description Чтение XML-файла
* файл @param
* Путь к файлу XML, включая имя файла.
* @return Документ документа
* @throws MalformedURLException
* @throws DocumentException
*/
чтение общедоступного статического документа (строковый файл) выдает исключение MalformedURLException,
ДокументИсключение {
Читатель SAXReader = новый SAXReader();
Документ document = reader.read(новый файл(файл));
возвратный документ;
}
/**
* Получить корневой узел документа Document
*
* @param документ
* @возвращаться
*/
общедоступный статический элемент getRootElement (документ документа) {
вернуть документ.getRootElement();
}
}