属性ノードを特別に処理して、特定の方法で任意の SimpleXML オブジェクトを出力する必要があります。
問題は、SimpleXML の要素と属性がまったく同じクラスを使用しているように見え、属性ノードがattributes()
メソッドをサポートするふりさえしており、SimpleXML がその内部を隠しているため、ノードのタイプを伝える方法がないように見えることです (XML を生成する以外に)そしてそれを再解析します)。
どちらも同じ結果になります:
$element = new SimpleXMLElement('<foo>test</foo>');
echo $element;
print_r($element);
$element = new SimpleXMLElement('<foo attr="test" />');
echo $element['attr'];
print_r($element['attr']);
SimpleXML でノードのタイプを識別できる隠しプロパティ/メソッドはありますか? DOM$node->nodeType
または$node instanceof DOMAttr
? (代わりに DOM を使用することはできません。SimpleXML のサポートはコア要件です)。