Eine praktische Bibliothek zum Lesen von XML. Klicken Sie hier für eine detaillierte Übersicht (https://qiita.com/bocc/items/5d7213431e5a5e3a67e9)
Es läuft unter Spring MVC, ist also überhaupt nicht vielseitig. Ich kenne keine so besondere Umgebung! Leute bitte hier hingehen
Frühlingsbenutzer Es scheint, dass Spring IO die Abhängigkeiten verwaltet. Verwenden wir sie also sofort.
pom.xml
<!-- JDOM -->
<dependency>
<groupId>org.jdom</groupId>
<artifactId>jdom2</artifactId>
</dependency>
Das Versionsmanagement ist wie immer Spring IO.
Angenommen, ein Webdienst (obwohl es nicht sein muss) Lesen wir das XML.
Dies ist das für das Beispiel verwendete XML
sample.xml
<?xml version="1.0" encoding="UTF-8"?>
<employees>
<employee>
<name>Yamamoto</name>
<class>Sales Section1</class>
<sex>male</sex>
<age>10</age>
</employee>
<employee>
<name>Hanako</name>
<class>Sales Section2</class>
<sex>female</sex>
<age>20</age>
</employee>
<employee>
<name>Taniguchi</name>
<class>Develop Section2</class>
<sex>male</sex>
<age>30</age>
</employee>
</employees>
Lassen Sie uns dies in ** src / main / resource ** bekommen.
DomController.java
@Autowired
ResourceLoader resourceLoader;
@RequestMapping(value="/readable")
public String readable() {
//Dateierfassung
Resource resource = resourceLoader.getResource("classpath:sample.xml");
Document doc = null;
Element root = null;
//Holen Sie sich Xml
try {
doc = new SAXBuilder().build(resource.getFile());
root = doc.getRootElement();
} catch (JDOMException e) {
System.out.println(e);
} catch (IOException e) {
//TODO automatisch generierter Fangblock
System.out.println(e);
}
Von nun an wird der Spring-Code gemischt Wenn es sich um ein normales Beispiel handelt, ist ** resource.getFile () ** eine ** neue Datei ("hogehoge.xml") **
Was machst du
DomController.java
doc = new SAXBuilder().build(resource.getFile());
root = doc.getRootElement();
Ich bekomme hier nur das Wurzelelement.
DomController.java
//Holen Sie sich untergeordnete Elemente aus XML (keine Enkelelemente)
List<Element> list = root.getChildren();
Dieses Mal gibt es 3 untergeordnete Elemente, es handelt sich also um eine Liste.
Versuchen Sie, den Wert des Namens unter Mitarbeiter zu ermitteln. Sie können den Attributwert auch abrufen, indem Sie ** getValue () ** in ** getAttribute ("hoge_name") ** ändern. Die Anzahl der Schleifen nimmt mit zunehmender Anzahl von Enkelkindern und Urenkelkindern zu. (Ich denke, es ist eine Technik, um von hier aus nach "Bäumen" zu suchen.)
DomController.java
List<String> result = new ArrayList<String>();
//Schleife, um Enkelelemente aus Xml zu erhalten
for(Element e : list) {
if(e.getName().compareTo("employee") == 0) {
result.add(e.getChild("name").getValue());
}
}
//Schleife, um das abgerufene Element an die Konsole auszuspucken
for(String name : result) {
System.out.println(name);
}
DomController.java
@RestController
public class DomController {
@Autowired
ResourceLoader resourceLoader;
@RequestMapping(value="/readable")
public String readable() {
//Dateierfassung
Resource resource = resourceLoader.getResource("classpath:sample.xml");
Document doc = null;
Element root = null;
//Holen Sie sich Xml
try {
doc = new SAXBuilder().build(resource.getFile());
root = doc.getRootElement();
} catch (JDOMException e) {
System.out.println(e);
} catch (IOException e) {
//TODO automatisch generierter Fangblock
System.out.println(e);
}
//Holen Sie sich untergeordnete Elemente aus XML (keine Enkelelemente)
List<Element> list = root.getChildren();
List<String> result = new ArrayList<String>();
//Schleife, um Enkelelemente aus Xml zu erhalten
for(Element e : list) {
if(e.getName().compareTo("employee") == 0) {
result.add(e.getChild("name").getValue());
}
}
//Schleife, um das abgerufene Element an die Konsole auszuspucken
for(String name : result) {
System.out.println(name);
}
return null;
}
Es gibt kein Problem mit @Controller, auch wenn es nicht @RestController ist.
Lassen Sie uns über einen Browser darauf zugreifen und den Vorgang überprüfen.
Konsolenbildschirm
Sie können sehen, dass der Wert von name aus XML erhalten wird.
Recommended Posts