Unten finden Sie einen XML-Lesetest, den ich selbst geschrieben habe
Kopieren Sie den Codecode wie folgt:
import java.util.Iterator;
import java.io.BufferedReader;
java.io.File importieren;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import org.dom4j.*;
import org.dom4j.io.SAXReader;
öffentliche Klasse XmlRead {
static StringBuilder sBuilder = new StringBuilder();
public static void main(String[] args) löst eine IOException {
BufferedReader bReader = new BufferedReader(new InputStreamReader(
System.in));
String-Pfad = null;
System.out.println("Bitte geben Sie den absoluten Pfad und Dateinamen der XML-Datei ein:/n");
path = bReader.readLine();
sBuilder.append("Ausgabe des XML-Dateiinhalts starten/n");
Dokument document = null;
versuchen {
document = read(path);
sBuilder.append(path + „/n“);
} Catch (MalformedURLException e) {
e.printStackTrace();
} Catch (DocumentException e) {
e.printStackTrace();
}
Element root = getRootElement(document);
if (root == null) {
System.out.print("Der Wurzelknoten wurde nicht abgerufen");
zurückkehren;
}
// Holen Sie sich das Codierungsformat des XML-Dokuments
String encString = document.getXMLEncoding();
sBuilder.append("<?xml version=/"1.0/" binding=/"" + encString
+ "/">/n");
sBuilder.append(elementText(root, attText(root), 0));
System.out.println(getIterator(root, 0) + „</“ + root.getName() + „>“);
}
/**
* Rekursiver Knoten
*
* @Beschreibung
* @param-Element
* @param lvl
* Ebene
* @zurückkehren
*/
privater statischer String getIterator(Element element, int lvl) {
lvl += 1;
for (Iterator i = element.elementIterator(); i.hasNext();) {
Element e = (Element) i.next();
sBuilder.append(elementText(e, attText(e), lvl));
getIterator(e, lvl);
int count = e.nodeCount();
if (count > 0) {
for (int j = 0; j < lvl; j++) {
sBuilder.append(" ");
}
}
sBuilder.append("</" + e.getName() + ">/n");
}
return sBuilder.toString();
}
/**
* Rufen Sie den Zeichenfolgenwert des Attributs des aktuellen Knotens ab
*
* @Beschreibung
* @param-Element
* Aktueller Knoten
* @zurückkehren
*/
privater statischer String attText(Element element) {
String str = " ";
for (int i = 0; i < element.attributeCount(); i++) {
Attribut attribute = element.attribute(i);
str += attribute.getName() + "=/"" + attribute.getValue() + "/" ";
}
return str;
}
/**
* Ermitteln Sie den Textwert des aktuellen Elements
*
* @Beschreibung
* @param-Element
* Aktueller Elementknoten
* @param-Text
* Attributwert
* @param lvl
* Ebene
* @zurückkehren
*/
private static String elementText(Element element, String text, int lvl) {
String str = "";
for (int i = 0; i < lvl; i++) {
str += " ";
}
str += "<" + element.getName();
if (text != null && text != "") {
str += Text;
}
//Da es in dom4j kein hasChild-Attribut oder keine hasChild-Methode gibt, muss die nodeCount()-Methode verwendet werden, um zu bestimmen, wann untergeordnete Knoten vorhanden sind.
int count = element.nodeCount();
if (count == 0) {
return str += ">";
}
return str += ">/n";
}
/**
*
* @description XML-Datei lesen
* @param-Datei
* XML-Dateipfad, einschließlich Dateiname
* @return Document-Dokument
* @throws MalformedURLException
* @throws DocumentException
*/
Das Lesen des öffentlichen statischen Dokuments (String-Datei) löst eine MalformedURLException aus.
DocumentException {
SAXReader-Reader = new SAXReader();
Dokument document = reader.read(new File(file));
Rücksendedokument;
}
/**
* Rufen Sie den Stammknoten des Dokumentdokuments ab
*
* @param-Dokument
* @zurückkehren
*/
öffentliches statisches Element getRootElement(Dokumentdokument) {
return document.getRootElement();
}
}