【发布时间】:2016-08-03 09:36:58
【问题描述】:
我正在尝试读取此 xml 文件,但我尝试制作的代码应该适用于任何 xml 文件:
<?xml version="1.0"?>
<auto>
<binnenkant>
<voorkant>
<stuur/>
<gas/>
</voorkant>
<achterkant>
<stoel/>
<bagage/>
</achterkant>
</binnenkant>
<buitenkant>
<dak>
<dakkoffer>
<sky/>
<schoen/>
</dakkoffer>
</dak>
<trekhaak/>
<wiel/>
</buitenkant>
</auto>
我正在使用以下两个函数将 XML 文件转换为数组并将该数组转换为树。
我试图保持 XML 文件的父子关系。我从第二个函数中得到的只是一个包含 xml 文件中所有标签的数组。
有人可以帮帮我吗?
function build_xml_tree(array $vals, $parent, $level) {
$branch = array();
foreach ($vals as $item) {
if (($item['type'] == "open") || $item['type'] == "complete") {
if ($branch && level == $item['level']) {
array_push($branch, ucfirst(strtolower($item['tag'])));
} else if ($parent == "" || $level < $item['level']) {
$branch = array(ucfirst(strtolower($item['tag'])) => build_xml_tree($vals, strtolower($item['tag']), $level));
}
}
}
return $branch;
}
function build_tree ($begin_tree, $content_naam) {
$xml = file_get_contents('xml_files/' . $content_naam . '.xml');
$p = xml_parser_create();
xml_parse_into_struct($p, $xml, $vals, $index);
?>
<pre>
<?php
print_r($vals);
?>
</pre>
<?php
$eindarray = array_merge($begin_tree, build_xml_tree($vals, "", 1));
return $eindarray;
}
【问题讨论】:
-
你听说过
DOMDocument吗? -
有没有可以在 DOMDocument 中使用的函数?
-
一个
DOMDocument对象已经代表一棵树 -
过去几个小时我一直在研究 DOMDocument,但我仍然没有找到将我的 xml TAGS 放入树中的方法。将值放入树中非常容易,是的。但我需要的是标签。
-
只是为了澄清:您的要求是有一个像树一样结构的数组,其键由节点标签名称组成?