0

削除したい:

<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');
}
?>
4

2 に答える 2

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();
于 2012-08-28T12:22:26.853 に答える
0

この行で

if($searchString == $child['Eng']) {

子ノードの本体を比較しようとしていますが、自動的に文字列に変換されません。それはまだなSimpleXMLElement objectので、比較は失敗します。

タグの本体を取得するには、明示的に文字列にキャストしてみてください。

if($searchString == (string)$child['Eng']) {
于 2012-08-28T12:20:42.047 に答える