J'ai un XML comme ci-dessouscomment supprimer nœud parent du XML en vérifiant la valeur de celui-ci en PHP DOM
<Row><Cell ss:StyleID="s245"><Data ss:Type="String">ABSOLUTE</Data></Cell>
<Cell ><Data ss:Type="String">Yellow</Data></Cell>
<Cell ><Data ss:Type="String">Exist</Data></Cell>
<Cell ><Data ss:Type="Number">30</Data></Cell>
<Cell ss:StyleID="s258"/>
</Row>
<Row><Cell ss:StyleID="s229"><Data ss:Type="String">PART3</Data></Cell>
<Cell ><Data ss:Type="String">Part3 Description</Data></Cell>
<Cell ><Data ss:Type="String">Buy_Part</Data></Cell>
<Cell ><Data ss:Type="Number">0</Data></Cell>
<Cell ss:StyleID="s258"/>
</Row>
<Row ss:AutoFitHeight="0" ss:Height="13.5"><Cell ss:StyleID="s245"><Data ss:Type="String">PART3</Data></Cell>
<Cell ><Data ss:Type="String">Part3 Description</Data></Cell>
<Cell ><Data ss:Type="String">Buy_Part</Data></Cell>
<Cell ><Data ss:Type="Number">0</Data></Cell>
<Cell ss:StyleID="s258"/>
</Row>
Je veux supprimer les nœuds du XML recherche de la valeur à l'intérieur du nœud. Exemple Je veux rechercher la valeur "PART3" dans l'exemple ci-dessus et je veux supprimer COmplete Node contenant cette valeur. Ainsi, la sortie ne devrait être que comme ci-dessous
<Row><Cell ss:StyleID="s245"><Data ss:Type="String">ABSOLUTE</Data></Cell>
<Cell ><Data ss:Type="String">Yellow</Data></Cell>
<Cell ><Data ss:Type="String">Exist</Data></Cell>
<Cell ><Data ss:Type="Number">30</Data></Cell>
<Cell ss:StyleID="s258"/>
</Row>
J'ai écrit ci-dessous le script
$doc = new DOMDOcument;
$doc->loadxml($xmldata);
$item_id = "PART3";
$xpath = new DOMXpath($doc);
foreach($xpath->query('//Row[Cell/Data="' . $item_id . '"]') as $node) {
$node->parentNode->removeChild($node);
}
echo $doc->savexml();
Mais il affiche le code XML complet sans supprimer. S'il vous plaît Aidez-moi comment supprimer le nœud en recherchant la valeur PART3 depuis le XML sera très grand et il contient beaucoup de <ROW><CELL><DATA></Data></Cell><ROW>
Le code que vous donnez fonctionne pour moi. Quand je l'exécute, je reçois le XML sans les nœuds '' ayant un enfant '' avec la valeur textuelle * PART3 * - en d'autres termes, le XML contient seulement le' 'Noeud contenant * ABSOLUTE * –
Gordon
Pouvez-vous s'il vous plaît coller le code complet que vous avez couru .. Je cours ceci dans UNIX –
J'ai couru votre code et votre XML (assigné à une variable avec HEREDOC d'ailleurs). Cela donne beaucoup d'avertissements sur le fait que le préfixe d'espace de nommage n'est pas défini, mais à part cela, il fait ce que vous demandiez. – Gordon