Donc, ceci est une question de suivi à ma question précédente qui a été résolu, voici le lien vers elle: using data from child element to select data in other element using simplexml in phpattributs dans des causes profondes fichier xml pour ne pas charger par simplexml php
grâce à @RomanPerekhrest pour résoudre ce.
Je possède ce morceau de code PHP en utilisant SimpleXML pour lire mon fichier xml
<?php
$xml = simplexml_load_file('../uploads/reports/report.xml');
$hits = $xml->xpath("results/hits/@rule_id");
$ruleIds = array_map(function($v){ // getting search path for each needed rule
return "profile_info/rules/rule[@id='". (string)$v. "']";
}, $hits);
foreach ($xml->xpath(implode(" | ", $ruleIds)) as $rule) {
echo '<div id="name">'. $rule->display_name .'</div>'.
'<div id="comment">'. $rule->display_comment .'</div>';
}
?>
à nouveau, grâce à @RomanPerekhrest pour venir avec cela.
Ce morceau de code fonctionne très bien avec mon fichier XML simplifié que j'ai créé pour illustrer mes problèmes dans mes questions précédentes, mais quand je l'applique, il ne semble pas rendre.
J'ai trouvé la raison pour laquelle, dans mon élément racine, il y a des attributs xmlns qui empêchent mon xml de se charger. Lorsque je supprime manuellement ces attributs, tout fonctionne comme prévu. (Je ne vais pas la liste du document entier xml, car il est 8500+ lignes longues) Voici l'élément racine avec les attributs:
<report xsi:schemaLocation="http://www.callassoftware.com/namespace/pi4 pi4_results_schema.xsd" xmlns="http://www.callassoftware.com/namespace/pi4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
je besoin d'un moyen de contourner en php. Vu que ces fichiers xml sont générés par d'autres logiciels et l'absence de paramètres dans cette génération, je ne peux pas simplement faire ces fichiers xml sans ces attributs.
Merci
addreses: 'http://www.callassoftware.com/namespace/pi4 pi4_results_schema.xsd' et' http: // www.callassoftware.com/namespace/pi4' sont invalides et retournent 'Non trouvé' – RomanPerekhrest
c'est ce que j'ai remarqué aswel, ça fait que tout mon xml ne parvient pas à lire, je ne suis pas vraiment sûr de la façon d'aborder ce problème –
@RomanPerekhrest Les identifiants d'espace de noms ne doivent pas vraiment être résolus nulle part. Ce sont des URI qui empêchent tout le monde d'utiliser les mêmes noms. – IMSoP