私は初めてなsimplexmlので、いくつかの用語が混同されている場合はご容赦ください:)
次のxmlファイルを次の場所に保存していますjs/data.xml::
<users>
<user>
<id>2011</id>
<posX>12</posX>
<posY>29</posY>
<title>Senior Developer</title>
</user>
<user>
<id>2022</id>
<posX>45</posX>
<posY>87</posY>
<title>Test22 text</title>
</user>
</users>
ユーザーを追加するための作業コードを含むphpファイルがあります。
$xml = simplexml_load_file("js/data.xml");
$user = $xml->addChild('user');
$user->addChild('id',2022);
$user->addChild('posX',34);
$user->addChild('posY',67);
$user->addChild('title','Test33 text');
// Store new XML code in data.xml
$xml->asXML("js/data.xml");
echo $xml->asXML();
これにより、新しいユーザーがファイルに追加されます。これまでのところ、問題はありません。
コードをよく見ると、追加しようとしているこの新しいユーザーが xml ファイル内のユーザーと同じ ID (2022) を持っていることがわかります。これは同じ人物なので、この場合は追加せずに更新します。ここから問題が始まります。
彼を更新するには、まず ID が存在するかどうかを確認する必要があります。私はいくつかのグーグルを行い、このサイトを検索し、ここに示されている解決策を見つけました:
これは私のphpファイルの変更されたコードです:
$xml = simplexml_load_file("js/data.xml");
//from: https://stackoverflow.com/questions/1560827/php-simplexml-check-if-a-child-exist
if (isset($xml->user->id->2022)) { // c exists
echo "test";
} else { //else add it
$user = $xml->addChild('user');
$user->addChild('id',2022);
$user->addChild('posX',45);
$user->addChild('posY',87);
$user->addChild('title','Test33 text');
}
// Store new XML code in data.xml
$xml->asXML("js/data.xml");
echo $xml->asXML();
ここで、IDが存在するかどうかを確認しようとします。もしそうなら:echo何か、そうでなければその人を追加してください。残念ながら、このコードを実行すると、次のエラーが発生します。
Parse error: syntax error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or '{' or '$'
ここで私が間違っていることを知っている人はいますか?
posX私が抱えている2番目の問題は、存在する場合は子( 、posYおよびtitle)を更新することですid(もちろん、このIDでグループ化された子のみ)。コードのその部分は、テスト エコーが現在ある場所である必要があります。このサイトまたは Google で simplexml を使用して有効なソリューションを見つけることができませんでした。これを行う方法を知っている人はいますか?
お時間をいただきありがとうございます