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>
Je veux obtenir le XML avec l'espace de noms par défaut défini comme ci-dessous au format XPath.
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>
Maintenant, je veux obtenir la valeur «1.2.3» dans l'élément «
Dans le code ci-dessous, un caractère vide a été renvoyé et la valeur «1.2.3» n'a pas pu être obtenue.
Bad.java
BaseXPath xpath = new Dom4jXPath("//context-param/param-name[text()='version']/following-sibling::param-value");
String version = xpath.stringValueOf(doc); //⇒ Caractères vides
Vous devez définir vous-même l'espace de noms par défaut.
Good.java
//Espace de noms par défaut"p"Au préfixe.
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
http://waman.hatenablog.com/entry/20091030/1256858160 http://www.edankert.com/defaultnamespaces.html#What_s_the_Problem_
Recommended Posts