Vous trouverez ci-dessous un test de lecture XML que j'ai écrit moi-même
Copiez le code comme suit :
importer java.util.Iterator ;
importer java.io.BufferedReader ;
importer java.io.File ;
importer java.io.IOException ;
importer java.io.InputStreamReader ;
importer java.net.MalformedURLException ;
importer org.dom4j.* ;
importer org.dom4j.io.SAXReader ;
classe publique XmlRead {
StringBuilder statique sBuilder = new StringBuilder();
public static void main (String[] args) lance IOException {
BufferedReader bReader = nouveau BufferedReader (nouveau InputStreamReader (
System.in));
Chemin de chaîne = null ;
System.out.println("Veuillez entrer le chemin absolu et le nom du fichier XML :/n");
chemin = bReader.readLine();
sBuilder.append("Démarrer la sortie du contenu du fichier XML/n");
Document document = nul ;
essayer {
document = read(chemin);
sBuilder.append(chemin + "/n");
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}
Racine de l'élément = getRootElement(document);
si (racine == null) {
System.out.print("Le nœud racine n'a pas été obtenu");
retour;
}
// Récupère le format d'encodage du document XML
String encString = document.getXMLEncoding();
sBuilder.append("<?xml version=/"1.0/" encoding=/"" + encString
+ "/">/n");
sBuilder.append(elementText(root, attText(root), 0));
System.out.println(getIterator(root, 0) + "</" + root.getName() + ">");
}
/**
* Nœud récursif
*
* @description
* Élément @param
* @param niveau
* Niveau
* @retour
*/
chaîne statique privée getIterator (élément élément, int lvl) {
niveau += 1 ;
pour (Itérateur i = element.elementIterator(); i.hasNext();) {
Élément e = (Élément) i.next();
sBuilder.append(elementText(e, attText(e), lvl));
getIterator(e, niveau);
int count = e.nodeCount();
si (compte > 0) {
pour (int j = 0; j < niveau; j++) {
sBuilder.append(" ");
}
}
sBuilder.append("</" + e.getName() + ">/n");
}
return sBuilder.toString();
}
/**
* Obtenez la valeur de chaîne de l'attribut du nœud actuel
*
* @description
* Élément @param
* Nœud actuel
* @retour
*/
chaîne statique privée attText (élément élément) {
Chaîne str = " " ;
pour (int i = 0; i < element.attributeCount(); i++) {
Attribut attribut = element.attribute(i);
str += attribut.getName() + "=/"" + attribut.getValue() + "/" ";
}
return str;
}
/**
* Obtenez la valeur textuelle de l'élément actuel
*
* @description
* Élément @param
* Nœud d'élément actuel
* Texte @param
* valeur d'attribut
* @param niveau
* Niveau
* @retour
*/
private static String elementText (élément d'élément, texte de chaîne, int lvl) {
Chaîne str = "" ;
pour (int je = 0; je < niveau; i++) {
str += " ";
}
str += "<" + element.getName();
if (texte != null && texte != "") {
str + = texte ;
}
// Puisqu'il n'y a pas d'attribut ou de méthode hasChild dans dom4j, la méthode nodeCount() doit être utilisée pour déterminer quand il y a des nœuds enfants.
int count = element.nodeCount();
si (compte == 0) {
return str += ">";
}
return str += ">/n";
}
/**
*
* @description Lire le fichier XML
* Fichier @param
* Chemin du fichier XML, y compris le nom du fichier
* @retour du document
* @throws MalformedURLException
* @throws DocumentException
*/
La lecture d'un document statique public (fichier de chaîne) renvoie une exception MalformedURLException,
DocumentException {
Lecteur SAXReader = new SAXReader();
Document document = reader.read (nouveau fichier (fichier));
document de retour ;
}
/**
* Obtenez le nœud racine du document Document
*
* Document @param
* @retour
*/
élément statique public getRootElement (document document) {
return document.getRootElement();
}
}