オブジェクトページから、印刷ページに関する情報を含むXML文書を作成したいとします。私はこのコードを使用しています:空の子の後にXML子を追加する
$xml = new \SimpleXMLElement('<page/>');
$xml->addChild("pageid", $page->id);
$xml->addChild("keyword", $page->page_name);
$elements = $xml->addChild("elements");
foreach ($page->elements as $page_element) {
$element = $elements->addChild("element");
$element->addChild("type", $page_element["type"]);
$element->addChild("id", $page_element["id"]);
$element->addChild("parentContainerID", $page_element["parent_container_id"]);
$element->addChild("parentContainerType", $page_element["parent_container_type"]);
$element->addChild("Width", $page_element["width"] ?? 0);
$element->addChild("Height", $page_element["height"] ?? 0);
$user_def_fields = $element->addChild("UserDefFields");
if (isset($page_element["custom_fields"])) {
foreach ($page["custom_fields"] as $custom_field_name => $custom_field_value) {
$user_def_field = $user_def_fields->addChild("field");
$user_def_field->addChild("label", $custom_field_name);
$user_def_field->addChild("value", $custom_field_value);
}
}
}
$states = $element->addChild("ArticleStates");
foreach($page_element["article_states"] as $state) {
$states->addChild("articlestate", $state);
}
}
これは動作します - しかし、article_statesが空のとき、私はこれを取得:
<element>
<type>group</type>
<id>1234</id>
<parentcontainerid>2345</parentcontainerid>
<parentcontainertype>article</parentcontainertype>
<width>0</width>
<height>0</height>
<userdeffields>
<articlestates></articlestates>
</userdeffields>
</element>
articlesstatesタグがuserdeffieldsの内側にあります。それは間違っている、それはこのようにする必要があります:
<element>
<type>group</type>
<id>1234</id>
<parentcontainerid>2345</parentcontainerid>
<parentcontainertype>article</parentcontainertype>
<width>0</width>
<height>0</height>
<userdeffields></userdeffields>
<articlestates></articlestates>
</element>
H
実にシンプルな...しかし、奇妙な
:-)私はどのように '$ page_elementかどうかが表示されません["article_states"] 'が空であるかどうかは関係ありません。このプロパティがループされる前に' articlestates'要素が追加されます。これを再現する実際の例を表示できますか? – CBroe