[JAVA] `SAXReader`: Ruft die XML-Datei mit dem im XPath-Format festgelegten Standard-Namespace ab

Umgebung

pom.xml


<dependency>
    <groupId>dom4j</groupId>
    <artifactId>dom4j</artifactId>
    <version>1.6.1</version>
</dependency>

<dependency>
    <groupId>jaxen</groupId>
    <artifactId>jaxen</artifactId>
    <version>1.1.1</version>
</dependency>

Was du machen willst

Ich möchte das XML mit dem unten angegebenen Standard-Namespace im XPath-Format erhalten.

web.xml


<?xml version="1.0" encoding="UTF-8" ?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
         version="2.4">
  <context-param>
    <param-name>version</param-name>
    <param-value>1.2.3</param-value>
  </context-param>
 </web-apps>

Jetzt möchte ich den Wert "1.2.3" im Element "" erhalten, der der Schlüsselversion "im Element" "entspricht.

Was ich versucht habe

Im folgenden Code wurde ein leeres Zeichen zurückgegeben und der Wert "1.2.3" konnte nicht erhalten werden.

Bad.java


 BaseXPath xpath = new Dom4jXPath("//context-param/param-name[text()='version']/following-sibling::param-value");
String version = xpath.stringValueOf(doc); //⇒ Leere Zeichen

Die Methode, die realisiert wurde

Sie müssen den Standard-Namespace selbst festlegen.

Good.java


 //Standard-Namespace"p"Zum Präfix.
BaseXPath xpath = new Dom4jXPath(//p:context-param/p:param-name[text()='version']/following-sibling::p:param-value");
xpath.addNamespace("p", "http://java.sun.com/xml/ns/j2ee");
String version = xpath.stringValueOf(doc); //⇒1.2.3

Referenzseite

http://waman.hatenablog.com/entry/20091030/1256858160 http://www.edankert.com/defaultnamespaces.html#What_s_the_Problem_

Recommended Posts

`SAXReader`: Ruft die XML-Datei mit dem im XPath-Format festgelegten Standard-Namespace ab
[Java] Holen Sie sich die Datei unabhängig von der Umgebung in das JAR
Formatieren Sie XML in Java
Fügen Sie die Datei in die Eigenschaften eines Strings mit Spring XML-Konfiguration ein
Überschreiben Sie die Bean-Definition in der Spring-XML-Konfigurationsdatei mit einer anderen XML
In Redmine können Sie das Projekt mit Project.find (<Kennung>) abrufen.
Ruft Attribute und Werte aus einer XML-Datei in Java ab
[Problemlösung] SAXReader: Lesen einer XML-Datei mit einer externen DTD-Datei, die in einer Offline-Umgebung angegeben ist
Korrigieren Sie den Namen der Kriegsdatei auf den in Maven festgelegten
Rufen Sie die öffentliche URL der privaten Datei von Flickr in Java ab
So ermitteln Sie die Länge einer Audiodatei mit Java