私のxmlファイルはこのように見えます - 私は(例のために簡略化したいです)すべてのノード値に1を加えて重複をチェックします。重複したノードが存在する場合は、親を削除してから、すべてを一意にxmlとして返します。XMLファイルノード値をsimpleXMLで操作した後、ノード値に重複が発生した場合、どのようにして親を削除するのですか?
<?xml version="1.0" encoding="UTF-8"?>
<channel>
<item>
<gid>1240</gid>
</item>
<item>
<gid>1440</gid>
</item>
<item>
<gid>1440</gid>
</item>
<item>
<gid>246</gid>
</item>
は、だから私の所望の出力は次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<channel>
<item>
<gid>1241</gid>
</item>
<item>
<gid>1441</gid>
</item>
<item>
<gid>247</gid>
</item>
私のコードは次のようになります - 操作部が解決されるが、私はかどうかを確認する方法を見つけ出すことはできませんnewは重複していて、その親をXMLとして返す前に削除します。私は、ループ内の配列としてすべての値を格納することは正しいと思いますが、それ以降は固まってしまいます。何か助けに感謝します。
<?php
$xmllink = 'items.xml';
header("Content-type: text/xml");
$xml=simplexml_load_file($xmllink) or die("Error: Cannot create object");
$xml->channel;
foreach ($xml as $anything) {
// find the <gid>
$newgid = $anything->gid;
// manipulate <gid>
$anything->gid = $newgid +1;
// store all gid + 1 in array
$allgids[] = $newgid;}
echo $xml->asXML();
?>
これは非常にうまく動作し、私にとって大きな助けになります。 –
助けになるのはうれしいです。あなたはこの答えに満足すれば正しいものとしてマークすることができますか?ありがとう –