私は(いくつかの検証の後)フォームを送信し、次のようにいくつかのxmlをコンパイルしています:
$sxe = new SimpleXMLElement($xmlstr);
$MyFirstNode = $sxe->addChild('MyFirstNode', $_POST["MyTitle"]);
$MySecondNode = $sxe->addChild('MySecondNode');
$MyTHIRDNode = $MySecondNode->addChild('MyTHIRDNode', $_POST["FormElementName"]);
この後、次のコードを使用して xml をドキュメントに書き込みます。
$myFile = "myfilename.xml";
$fh = fopen($myFile, 'w') or die("can't open file");
fwrite($fh, $sxe->asXML());
fclose($fh);
あるシナリオでは、空のノードを含む XML を生成する必要があります。したがって、上記の例では、FormElementName
が空であれば問題ありません (次のようなものを生成します)。<MyTHIRDNode></MyTHIRDNode>
ただし、別のシナリオでは、これらの空のノードをすべて削除する必要があるため、何らかのデータを含むノードが残ります。
<node>
<one>Hello</one>
<two></two> // <- Empty
<three>World!</three>
</node>
// Becomes...
<node>
<one>Hello</one>
<three>World!</three>
</node>
2 つのシナリオを区別するための if ステートメントがあります。
if ($_POST["operation"] == "UPDATE") {
//do something
}
ただし、「$sxe」を反復処理してこれらの空のノードを削除する方法がわかりません。
どんな助けでも大歓迎です:)