Bei der Einschränkung müssen wir häufig XML verwenden, um einige Spezifikationen zu definieren. Die im Artikel verwendete Definition von XML lautet wie folgt:
Die Codekopie lautet wie folgt:
<? xml Version = "1.0" coding = "utf-8"?>
<Accesos>
<Itement>
<Sozio name = "adsf">
<numero> 00045050 </numero>
<Position> 0 </Reposicion>
<Nombre> Moises Moreno </nombre>
<Unteros>
<lu> t1 </lu>
<Ma> t2 </ma>
<mi> t3 </mi>
<ju> t4 </ju>
<VI> T5 </vi>
<sa> t6 </sa>
<do> t7 </do>
</Buros>
</Socio>
</item>
<Itement>
<Sozio name = "adsfa">
<numero> 00045051 </numero>
<Position> 0 </Reposicion>
<Nombre> Ruth Pena </nombre>
<Unteros>
<lu> s1 </lu>
<Ma> s2 </ma>
<mi> s3 </mi>
<Ju> s4 </ju>
<VI> S5 </vi>
<Sa> s6 </sa>
<do> s7 </do>
</Buros>
</Socio>
</item>
</Accesos>
Lassen Sie uns den folgenden Code sehen:
Die Codekopie lautet wie folgt:
public void read () {
versuchen {
Document doc = new SAXReader (). Read (neue Datei ("src/user.xml"));
Liste <Element> itemlist = doc.selectnodes ("/accesos/item/socio");
für (iterator <element> iter = itemlist.iterator (); iter.hasnext ();) {
Element Element = iter.Next ();
System.out.println ("numero =" + element.elementText ("numero"));
}
} catch (documentException e) {
E. printstacktrace ();
}
}
Dieser Code ist im Java -Projekt geschrieben, wobei user.xml im Stammverzeichnis von SRC platziert ist und die Klasse unter SRC/COM/JIANXIN/XML befindet. Dies ist das Verzeichnis im JAR -Paket
com/jianxin/xml
user.xml
In dieser Methode finden Sie SRC, um user.xml zu finden.
Dies liegt hauptsächlich daran, dass das JAR -Paket eher eine separate Datei als ein Ordner ist. kann nicht gefunden werden.
Wenn Sie XML dann in das JAR -Paket eingeben, unabhängig davon, in welchem Verzeichnis der Benutzer.xml sich befindet, finden Sie die Klassen im JAR -Paket.
Natürlich nicht, können wir einen Klassenlader (Classloader) verwenden, um dies zu tun:
1) Classloader ist eine abstrakte Klasse des Klassenladers. Es kann die laufenden Informationen der Lastklasse während der Laufzeit dynamisch erhalten. Es kann gesagt werden, dass beim Aufrufen der READXML -Klasse in xml.jar die JVM die READXML -Klasse lädt und die READXML -Laufzeitinformationen aufzeichnet (einschließlich der Root Pfadinformationen des JAR -Pakets, in dem wir uns befinden). Die Methoden in der Klassenloaderklasse können uns helfen, diese Informationen dynamisch zu erhalten:
A.Public URL getResource (String) findet die Ressource mit dem angegebenen Namen.
b.public InputStream GetResourceAsStream (String -Name), geben Sie den angegebenen Ressourceneingangsstrom zurück
2) Classloader ist abstrakt und kann nicht instanziiert werden. Wenn wir wirklich Code schreiben, verwenden wir GetResource und GetResourceAsStream -Methoden in der Klassenklasse, die die GetResource -Methoden delegieren und GetResourceAsStream -Methoden im Klassenloader delegieren. Schreiben Sie nun die obige Methode neu:
Die Codekopie lautet wie folgt:
public void read () {
versuchen {
InputStream ist = this.getClass (). GetResourceAsStream ("/user.xml");
Document doc = new Saxreader (). Read (IS);
Liste <Element> itemlist = doc.selectnodes ("/accesos/item/socio");
für (iterator <element> iter = itemlist.iterator (); iter.hasnext ();) {
Element Element = iter.Next ();
System.out.println ("numero =" + element.elementText ("numero"));
}
} catch (documentException e) {
E. printstacktrace ();
}
}
Auf diese Weise gibt es kein Problem mit dem Ausführen vor der Verpackung.
Hier ist das Wichtigste, Klassen zu erhalten und die Root -Verzeichnisinformationen des Glass zu erhalten, und der Klassenloader wird sich auch ändern. Moment, aber ich habe nur auf ein solches Problem gestoßen. Daher planen wir, ein Buch mit einer geringeren Java -Ebene zu lesen, damit wir bei der Einkapselung von Dingen für andere entspannt werden können.
Vor kurzem habe ich die meiste Zeit entwickelt, und der versprochene Jira kann später während des Prozesses DWR verwendet und im nächsten Artikel beschrieben ~~~