Java XPath: Récupère tous les éléments correspondant à une requête
Je veux faire une requête XPath sur ce fichier XML (extrait):
<?xml version="1.0" encoding="UTF-8"?>
<!-- MetaDataAPI generated on: Friday, May 25, 2007 3:26:31 PM CEST -->
<Component xmlns="http://xml.sap.com/2002/10/metamodel/webdynpro" xmlns:IDX="urn:sap.com:WebDynpro.Component:2.0" mmRelease="6.30" mmVersion="2.0" mmTimestamp="1180099591892" name="MassimaleContr" package="com.bi.massimalecontr" masterLanguage="it">
...
<Component.UsedModels>
<Core.Reference package="com.test.test" name="MasterModel" type="Model"/>
<Core.Reference package="com.test.massimalecontr" name="MassimaleModel" type="Model"/>
<Core.Reference package="com.test.test" name="TravelModel" type="Model"/>
</Component.UsedModels>
...
J'utilise ce bout de code:
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true);
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document document = builder.parse(new File("E:\\Test branch\\test.wdcomponent"));
XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
xpath.setNamespaceContext(new NamespaceContext() {
...(omitted)
System.out.println(xpath.evaluate(
"//d:Component/d:Component.UsedModels/d:Core.Reference/@name",
document));
Ce que je m'attends à recevoir:
MasterModel
MassimaleModel
TravelModel
Ce que j'obtiens:
MasterModel
Il semble que seul le premier élément est renvoyé. Comment puis-je obtenir toutes les occurrences qui correspond à ma requête?
source d'informationauteur Pietro M.
Vous devez vous connecter pour publier un commentaire.
Vous aurez un élément de type
NodeList
Voir Comment lire les données XML à l'aide de XPath en Java
Comme par exemple, Si vous avez d'abord compiler l'expression XPath puis l'exécuter, en spécifiant que vous voulez un ensemble de nœuds de retour, vous devriez obtenir le résultat que vous souhaitez.