0

php ファイルと xml ファイルに問題があります。要素を xml ファイルに追加したいです。私はこのコードを書きましたが、動作します:

<?php

$file = 'clients.xml';                

$doc = new DOMDocument();                 
$doc->load($file);                       
$get_elms = $doc->getElementsByTagName("Client");     
$nr_elms = $get_elms->length;             

$node = $get_elms->item($nr_elms-1);              
$element = $node->nodeName;               

if($element=='Client') {
    $idfinal=intval($node->getAttribute('id'))+1;
    $client = $doc->createElement('Client');                          
    $node->parentNode->appendChild($client);   
    $client->setAttribute('id',$idfinal);    
    $client->setAttribute('name','Any name');
    $client->setAttribute('cnp','12345');
    $client->setAttribute('adress','adress');
    $client->setAttribute('nb','123');
    $client->setAttribute('amount','1000');
    $client->setAttribute('type','Any type');

 }


if($doc->save('clients.xml')) {
echo htmlentities($doc->saveXML());
}


?>

まったく同じコードをクラス、関数 addClient に入れても、xml ファイルが認識されないため機能しません。echo $get_elms->length; を試しました。そしてそれは私に0を返し、私の変数$ elementは空であるため、その「if」には入りません。このクラスを使用する必要があるのは、削除や更新などの操作をさらに行う必要があり、これらの関数にいくつかのパラメーターを送信する必要があるためです。誰かが私を助けて、私が間違っていることを教えてもらえますか?

私のクラスは次のようになります。

class xmlClientMappers {


    public function adaugaClient(array $row)
    {

        $name    = $row['name'];
        $adress  = $row['adress'];
        $cnp     = $row['cnp'];
        $nb      = $row['nb'];
        $amount  = $row['amount'];
        $type    = $row['type'];

      $file = 'clients.xml';                

$doc = new DOMDocument();                 
$doc->load($file);                       
$get_elms = $doc->getElementsByTagName("*");     
$nr_elms = $get_elms->length;             
echo "The nomber is ".$nr_elms;
$node = $get_elms->item($nr_elms-1);              
$element = $node->nodeName;               
echo "<br/>Here should be the name of the last element".$element;
if($element=='Client') {
    $idfinal=intval($node->getAttribute('id'))+1;
    echo " id-ul e ".$idfinal;
    $client = $doc->createElement('Client');                          
    $node->parentNode->appendChild($client);   
    $client->setAttribute('id',$idfinal);    
    $client->setAttribute('name',$name);
    $client->setAttribute('cnp',$cnp);
    $client->setAttribute('adress',$adress);
    $client->setAttribute('nb',$nb);
    $client->setAttribute('amount',$amount);
    $client->setAttribute('type',$type);

}


     if($doc->save('clienti.xml')) {
       echo htmlentities($doc->saveXML());
  else echo "It is wrong!";
}
    }
}
?>

ありがとうございました!

4

1 に答える 1

0

リクエストを実行するファイルの場所に相対的なxmlの場所を配置する必要があります。

たとえば、次の構造:

lib
  \ xmlClientMappers.php
  \ client.xml
index.php

ファイル名には「./lib/client.xml」を使用する必要があります。

これが問題になると思います。

于 2013-04-24T09:30:53.110 に答える