[JAVA] Versuchen Sie, XML mit JDOM zu lesen

Was ist DOM?

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.

Bibliothek zu Maven hinzufügen

pom.xml


	<!-- JDOM -->
	<dependency>
	    <groupId>org.jdom</groupId>
	    <artifactId>jdom2</artifactId>
	</dependency>

Das Versionsmanagement ist wie immer Spring IO.

Versuchen Sie, XML zu lesen.

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.

Versuchen Sie, ein untergeordnetes Element zu erhalten

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 Enkelelements zu ermitteln.

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);
		}

Dies ist das endgültig abgeschlossene System

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.

Versuche dich zu bewegen

Lassen Sie uns über einen Browser darauf zugreifen und den Vorgang überprüfen.

image.png

Konsolenbildschirm

image.png

Sie können sehen, dass der Wert von name aus XML erhalten wird.

Recommended Posts

Versuchen Sie, XML mit JDOM zu lesen
Versuchen Sie DI mit Micronaut
Versuchen Sie es mit Trailblazer
Probieren Sie WebSocket mit Jooby aus
Versuchen Sie eine DB-Verbindung mit Java
Versuchen Sie gRPC mit Java, Maven
Versuchen Sie, den Cloudera Manager mit Docker auszuführen
Versuchen Sie, recaptcha mit eingebettetem Jetty zu implementieren.
Versuchen Sie, PostgreSQL-Arrays mit JDBC zu bearbeiten
Versuchen Sie es mit Redis mit Java (jar)
Versuchen Sie eine syntaktische Analyse englischer Sätze mit Stanford CoreNLP
Versuchen Sie die bidirektionale Kommunikation mit gRPC Java