この XML 構造を解析しようとしていますが、再帰を使用して "n" 深さのネストされたタグを解析する方法が見つかりません。XML 構造:
<plist version="1.0">
<key>1.1.1</key>
<dict>
<key>nag</key>
<integer>1</integer>
</dict>
<key>2.2.2</key>
<dict>
<key>nag</key>
<integer>1</integer>
</dict>
<key>3.3.3</key>
<dict>
<key>show_upgrade_button</key>
<integer>0</integer>
<key>nag_startup</key>
<dict>
<key>nag_gameover</key>
<integer>3</integer>
</dict>
<key>my_stuff</key>
<string>1=cb 2=rm 3=cb+rm =leave banner ads off</string>
</dict>
<key>4.4.4</key>
<dict>
<key>nag</key>
<integer>1</integer>
</dict>
</plist>
ノードは一致しています。キー ノードはノード内のデータのバージョン番号ですkey
が、上記のコードでわかるように、xml 構造には任意のネストがあります。これまでのところ、ノードを受け入れるこの再帰関数がありますが、光が見えません。dict
dict
dict
dict
<? php
function recursiveNodes($nodes, $arr){
$count=0;
if($nodes->hasChildNodes() === true ){
foreach($nodes->childNodes as $node){
$temp = array();
if($node->nodeName === 'key'){
$temp['key_name'] = $node->nodeValue;
if($node->nextSibling->nodeName !== 'dict'){
$sibling = $node->nextSibling;
$temp['type_name'] = $sibling ->nodeName;
$temp['value_name'] = $sibling ->nodeValue;
}
if($sibling->nodeName === 'dict'){
return recursiveNodes($sibling, $arr[$count++][]=$temp);
}
}
}
}
return $arr;
}
?>