我已经尝试了一些方法来找出我的代码有什么问题,但是我没有看到问题。
简而言之,我有一个像这样的结构化关联数组:
$data = array(
'field1' => array(
'filed11' => '',
'field12' => array(
'field121' => 'blub'
)
),
'field2' => 'foo',
'field3' => array(
'field31' => 'val',
'field32' => 'other value'
)
);
我写了一个小的递归方法来从Array生成xml:
protected function buildXmlFromArray(SimpleXMLElement $xml, $data)
{
if(is_array($data)) {
foreach($data as $key => $value) {
if(is_array($value)) {
$child = $xml->addChild($key);
$this->buildXmlFromArray($child, $value);
} else {
$xml->addChild($key, $value);
}
}
}
}
因此,我生成了根节点并将其放入方法中
$xml = new SimpleXMLElement('<root />');
$res = $this->buildXmlFromArray($xml, $data);
print_r($xml->asXML());
exit;
我希望我会得到这样的东西:
<?xml version="1.0"?>
<root>
<field1>
<filed11 />
<field12>
<field121>blub</field121>
</field12>
</field1>
<field2>foo</field2>
<field3>
<field31>val</field31>
<field32>other value</field32>
</field3>
</root>
但是我收到了无效的XML:
<?xml version="1.0"?>
<root>
<field1>
<filed11>
<field12>
<field121>blub</field121>
</field12>
</field1>
<field2>foo</field2>
<field3>
<field31>val</field31>
<field32>other value</field32>
</field3>
</root>
因此field11没有关闭 怎么了?
我的PHP版本是7.2.10-0ubuntu0.18.04.1