私の質問は次のようなベスト フレーズです: PHP の SimpleXML で、特定の属性を持つ子を削除します。
ただし、simpleXML は使用していません。
XML for PHP は初めてなので、最善の方法を行っていない可能性があります
個々のユーザーごとに $dom->save($xml) を使用して作成された xml があります。(非公開の理由により、すべてを 1 つの xml に配置していません)
それは私にそのxml宣言を与えます<?xml version="1.0"?>
(他の人にそれを作成する方法はわかりませんが、うまくいけばそれはポイントではありません)
<?xml version="1.0"?>
<details>
<person>name</person>
<data1>some data</data1>
<data2>some data</data2>
<data3>some data</data3>
<category id="0">
<categoryName>Cat 1</categoryName>
<categorydata1>some data</categorydata1>
</category>
<category id="1">
<categoryName>Cat 2</categoryName>
<categorydata1>some data</categorydata1>
<categorydata2>some data</categorydata2>
<categorydata3>some data</categorydata3>
<categorydata4>some data</categorydata4>
</category>
</details>
そして、削除ボタンを使用してアクティブ化された関数を実行するときに、php の DOM クラスで id という名前の特定の属性を持つカテゴリを削除したいと考えています。
以下は、機能しようとしている関数のデバッグです。私が間違っていることを知ることができますか?
function CatRemove($myXML){
$xmlDoc = new DOMDocument();
$xmlDoc->load( $myXML );
$categoryArray = array();
$main = $xmlDoc->getElementsByTagName( "details" )->item(0);
$mainElement = $xmlDoc->getElementsByTagName( "details" );
foreach($mainElement as $details){
$currentCategory = $details->getElementsByTagName( "category" );
foreach($currentCategory as $category){
$categoryID = $category->getAttribute('id');
array_push($categoryArray, $categoryID);
if($categoryID == $_POST['categorytoremoveValue']) {
return $categoryArray;
}
}
}
$xmlDoc->save( $myXML );
}
上記は、リターンをifの外側にスロットすると、常に[0]-> 0の配列を出力します。より良い方法はありますか?getElementbyId も使用してみましたが、その方法がわかりません。
属性を使用したくないのですが、それが物事をより簡単にするのであれば。