2017-11-28 12 views
0

xmlファイルを編集する予定のコードを書きました。しかし、それは動作していないようです。私はすべてをチェックして、すべてのデータが通過するように見えますが、何とかノードを更新しません。 xmlファイルとデータを作成するとデータが追加されます。しかし、何とか私はそれを更新するように見えることはできません。DOMDocumentがnodeValueを更新しない

if ($edit && isset($_POST["submit"])) { 
    $doc = new DomDocument('1.0'); 

    $doc->validateOnParse = true; 
    $doc->load('data.xml');   
    $message = getElementById($_GET["id"], $doc); 
    $message->getElementsByTagName("title")->nodeValue = 'hey'; 
    $message->getElementsByTagName("content")->nodeValue = $_POST["content"]; 
    $target = $message->getElementsByTagName("target")->nodeValue = $_POST["target"]; 
    $date1 = $message->getElementsByTagName("startDate")->nodeValue = $_POST["date1"]; 
    $date2 = $message->getElementsByTagName("endDate")->nodeValue = $_POST["date2"]; 

    $doc->formatOutput = true; 
    $doc->save('data.xml'); 

} 

function getElementById($id, $doc) 
{ 
    $xpath = new DOMXPath($doc); 
    return $xpath->query("//*[@id='$id']")->item(0); 
} 

XML:

<message id="5a1c301ae5429" top="12px" left="12px" duration="20"> 
<title>hey</title> 
<content>12345</content> 
<target>2</target> 
<startDate>27/11/2017 16:30</startDate> 
<endDate>27/11/2017 16:50</endDate> 
<media type="image" width="200px" height="200px" top="-20px" left="129px"> 
<uri> 
localhost/xml/uploads/4215c27edf5ff51aee0def29f84949be.jpg 
</uri> 
</media> 
</message> 
+0

保存する前にxmlファイルを読み込むと、すべての最初の変更は無視されます。 – Camille

+0

@Camille、申し訳ありません。私はテストからそれを削除することを忘れましたが、それは問題ではありません。 – Dani

+0

date1とdate2はありませんが、StartDateとendDateはありません – splash58

答えて

1

あなたがgetElementsByTagNameを呼び出し、これはタグ名と一致するノードのリストを返します。あなただけの各タグの1を持っているように、あなたが使用する必要がある値を、アクセスするたびに...

$message->getElementsByTagName("title")->item(0)->nodeValue = 'hey'; 

は、私は、リスト内の最初のノードを取得するために->item(0)を使用しました。

要素にアクセスするために必要なすべての時間に同じロジックを繰り返します。

関連する問題