PHP SimpleXml生成无效的XML

时间:2018-12-04 08:10:22

标签: php xml simplexml

我已经尝试了一些方法来找出我的代码有什么问题,但是我没有看到问题。

简而言之,我有一个像这样的结构化关联数组:

    $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

0 个答案:

没有答案