J'ai besoin d'interroger un document XML, puis d'afficher des valeurs de balises spécifiques, par ex. prénom, nom de famille, groupe (dept), job_title. J'utilise XMLReader car il se peut que je doive travailler avec de gros fichiers XML. J'utilise DomXPath pour filtrer les données, mais je ne sais pas comment récupérer le nodeName et la valeur de chaque élément. Le code ci-dessous ne renvoie que «membre» comme nom de noeud?Récupère le nom et la valeur d'un noeud donné en utilisant XMLReader, DOM, Xpath
Toute aide serait appréciée.
<?php
$reader = new XMLReader();
$reader->open('include/staff.xml');
while ($reader->read()){
switch($reader->nodeType){
case(XMLREADER::ELEMENT):
if($reader->localName === 'staff'){
$node = $reader->expand();
$dom = new DomDocument();
$dom->formatOutput = true;
$n = $dom->importNode($node, true);
$dom->appendChild($n);
$xp = new DomXpath($dom);
$res = $xp->query("/staff/member[groups='HR']");
}
}
}
echo $res->item(0)->nodeName;
echo $res->item(0)->nodeValue;
?>
Est-ce que ces valeurs ne se fonder sur XMLReader? J'utilise DOM et XPath donc je pense que je dois utiliser les méthodes DOM, c'est-à-dire $ res-> item (1) -> nodeValue; pour obtenir mes résultats filtrés. Essayé $ lecteur-> nom ... de toute façon et rien n'a été retourné. – rossjha
Ceci est censé être des propriétés de la classe XMLReader. Je pense que vous devriez voir quelque chose sous $ lecteur-> nom Essayez-le sur un exemple minimal. –
Salut merci pour votre aide. Je pense que je l'ai. Ma question était le problème. Une fois que j'ai réussi à maîtriser xpath, j'ai pu retourner nodeName et nodeValue pour chacune des balises. – rossjha