我想删除:
<newWord>
<Heb>צהוב</Heb>
<Eng>yellow</Eng>
</newWord>
从:
<?xml version="1.0" encoding="UTF-8"?>
<xml>
<newWord>
<Heb>מילה ראשונה</Heb>
<Eng>first word</Eng>
</newWord>
<newWord>
<Heb>צהוב</Heb>
<Eng>yellow</Eng>
</newWord>
</xml>
所以输出将是:
<?xml version="1.0" encoding="UTF-8"?>
<xml>
<newWord>
<Heb>מילה ראשונה</Heb>
<Eng>first word</Eng>
</newWord>
</xml>
我尝试找到标记<newWord>
并在此之后转到它的孩子<Eng>yellow</Eng>
如果我在$searchString = 'yellow';
找到它,我应该转到它的一部分并删除元素<newWord>
。
我尝试通过以下代码执行此操作,但我不知道要去<newWord>
的孩子。很多帮助。
这是我的代码:
<?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');
}
?>
答案 0 :(得分:0)
在这一行
if($searchString == $child['Eng']) {
您正在尝试比较子节点的主体,但它不会自动转换为字符串。它仍然是SimpleXMLElement object
,因此比较失败。
尝试将其明确地转换为字符串以获取标记的正文。
if($searchString == (string)$child['Eng']) {
答案 1 :(得分:0)
试试这个:
$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();