Cómo eliminar un elemento específico del archivo xml
Frecuentes
Visto 683 veces
0
Quiero borrar:
<newWord>
<Heb>צהוב</Heb>
<Eng>yellow</Eng>
</newWord>
desde:
<?xml version="1.0" encoding="UTF-8"?>
<xml>
<newWord>
<Heb>מילה ראשונה</Heb>
<Eng>first word</Eng>
</newWord>
<newWord>
<Heb>צהוב</Heb>
<Eng>yellow</Eng>
</newWord>
</xml>
por lo que la salida será:
<?xml version="1.0" encoding="UTF-8"?>
<xml>
<newWord>
<Heb>מילה ראשונה</Heb>
<Eng>first word</Eng>
</newWord>
</xml>
trato de encontrar la etiqueta <newWord>
y despues de esto ir a hijo de ello <Eng>yellow</Eng>
y si lo encontre por $searchString = 'yellow';
Debería tener que ir a padre y eliminar el elemento. <newWord>
.
intento hacerlo con el siguiente codigo pero no se como ir al child del <newWord>
. muchas gracias por ayudar.
este es mi código:
<?php
$del=true;
if ($del==TRUE){
$searchString = 'yellow';
header('Content-type: text/xml; charset=utf-8');
$xml = simplexml_load_file('./Dictionary_user.xml');
foreach($xml->children() as $child){
if($child->getName() == "newWord") {
if($searchString == $child['Eng']) {
$dom->parentNode->removeChild($xml);
} else {
echo('no match found resualt');
}
}
}
$dom = new DOMDocument;
$dom->preserveWhiteSpace = FALSE;
$dom->formatOutput = true;
$dom->load('Dictionary_user.xml');
$dom->save("Dictionary_user.xml");
$dom->saveXML();
header('Location: http://127.0.0.1/www/www1/ajax/ajax4/workwell/popus1.html');
}
?>
2 Respuestas
0
Prueba esto:
$searchString = 'yellow';
$xml = simplexml_load_file('./Dictionary_user.xml');
foreach($xml->children() as $child){
if($child->getName() == "newWord") {
if($child->Eng == $searchString){
$dom = dom_import_simplexml($child);
$dom->parentNode->removeChild($dom);
}
}
}
echo $xml->asXML();
Respondido 28 ago 12, 13:08
0
En esta linea
if($searchString == $child['Eng']) {
Está tratando de comparar el cuerpo del nodo secundario, pero no se convierte en una cadena automáticamente. todavía es un SimpleXMLElement object
, por lo que la comparación falla.
Intente convertirlo explícitamente en una cadena para obtener el cuerpo de la etiqueta.
if($searchString == (string)$child['Eng']) {
Respondido 28 ago 12, 17:08
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas php xml or haz tu propia pregunta.