我通过curl
获得此类回复:
<ArrayOfServerFile>
<ServerFile>
...
<FileType>Folder</FileType>
<Identifier>x123</Identifier>
<Name>Client Templates</Name>
...
</ServerFile>
<ServerFile>
...
<FileType>XpressDox Template</FileType>
<Identifier>y456</Identifier>
<Name>contact-information.xdtpl</Name>
...
</ServerFile>
...
</ArrayOfServerFile>
我希望将此信息保存在树状data structure
中。
我尝试过这样的事情:
// Pseudo-code:
function run_procedure()
{
get XML data via curl
if FileType == 'Folder'
save name and other useful data into $tree_like_data_structure
run_procedure() // recursive call
else if FileType == 'XpressDox Template'
save name and other useful data into $tree_like_data_structure
}
var_dump($tree_like_data_structure);
这个想法是代表这样保存的数据:
[0][0] -> data
[1][0] -> data
[1][1] -> data
[1][2] -> [2][0] -> data
[2][1] -> data
[1][3] -> data
我很确定这不是很难实现,但我已经失去了很多时间而没有成功。任何小费都非常受欢迎。感谢.-
编辑1
我主要关心的是如何获取[深度] [元素]索引以及级别数据(类型,名称,内容等)的方式。
编辑2
基本上这是一个递归编程问题。 也许可以通过while
语句比使用递归函数更容易完成?
答案 0 :(得分:0)
尝试使用SimpleXML with the DOM创建阵列。
$dom = new DOMDocument;
$dom->loadXML('
<ArrayOfServerFile>
<ServerFile>
<FileType>Folder</FileType>
<Identifier>x123</Identifier>
<Name>Client Templates</Name>
</ServerFile>
</ArrayOfServerFile>');
if (!$dom) {
echo 'Error while parsing the document';
exit;
}
$s = simplexml_import_dom($dom);
echo $s->ServerFile[0]->FileType;