数组到XML同样的关键问题

时间:2014-12-03 17:45:11

标签: php xml

我已尝试将数组转换为xml。我是新手。我使用那个array2xml类。 (在http://www.lalit.org/lab/convert-xml-to-array-in-php-xml2array/上)

我的阵列:

$array = array();
$array['main']['head']['id'] = 1;
$array['main']['head']['type'] = 0;
$array['main']['head']['customerid'] = 10001;
$array['main']['address']['city'] = "BB";
$array['main']['address']['country'] = "AA";
$array['main']['orderlines']['line'][0]['prdcode'] = "1A2BC";
$array['main']['orderlines']['line'][0]['qty'] = 5;
$array['main']['orderlines']['line'][1]['prdcode'] = "2C2BC";
$array['main']['orderlines']['line'][1]['qty'] = 3;

$array['main'][0]['attr'][0]['line']['size'] = "100x200";
$array['main'][0]['attr'][0]['line']['color'] = "orange";
$array['main'][0]['attr'][1]['line']['size'] = "50x50";
$array['main'][0]['attr'][1]['line']['color'] = "orange";
$array['main'][1]['attr'][0]['line']['size'] = "75x200";
$array['main'][1]['attr'][0]['line']['color'] = "blue";
$array['main'][1]['attr'][1]['line']['size'] = "10x50";
$array['main'][1]['attr'][1]['line']['color'] = "green";

你可以在这里看到:http://codepad.org/GrUa5rpD

我想这样结果:

<?xml version="1.0" encoding="utf-8"?>
<main>
    <head>
        <id>1</id>
        <type>0</type>
        <customerid>0</customerid>
    </head>
    <address>
        <city>BB</city>
        <country>AA</country>
    </address>
    <orderlines>
        <line>
            <prdcode>1A2BC</prdcode>
            <qty>5</qty>
        </line>
        <line>
            <prdcode>2C2BC</prdcode>
            <qty>3</qty>
        </line>
    </orderlines>
    <attr>
        <line>
            <size>100x200</size>
            <color>orange</color>
        </line>
        <line>
            <size>50x50</size>
            <color>orange</color>
        </line>
    </attr>
    <attr>
        <line>
            <size>75x200</size>
            <color>blue</color>
        </line>
        <line>
            <size>10x50</size>
            <color>green</color>
        </line>
    </attr>
</main>

我的问题是当我转换PHP数组2 XML时,我收到<attr>标记的错误。密钥不是数字。

PHP错误: 的 Fatal error: Uncaught exception 'Exception' with message '[Array2XML] Illegal character in tag name. tag: 0 in node: main

如何解决此问题? 谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

这是创建xml所需的数组结构:

$main['head']['id'] = 1;
$main['head']['type'] = 0;
$main['head']['customerid'] = 10001;
$main['address']['city'] = 0;
$main['address']['country'] = 10001;
$main['orderlines']['line'][0]['prdcode'] = "1A2BC";
$main['orderlines']['line'][0]['qty'] = 5;
$main['orderlines']['line'][1]['prdcode'] = "2C2BC";
$main['orderlines']['line'][1]['qty'] = 3;
$main['attr'][0]['line'][0]['size'] = "100x200";
$main['attr'][0]['line'][0]['color'] = "orange";
$main['attr'][0]['line'][1]['size'] = "50x50";
$main['attr'][0]['line'][1]['color'] = "orange";
$main['attr'][1]['line'][0]['size'] = "75x200";
$main['attr'][1]['line'][0]['color'] = "blue";
$main['attr'][1]['line'][1]['size'] = "10x50";
$main['attr'][1]['line'][1]['color'] = "green";

$xml = Array2XML::createXML('main', $main);

或以不同的方式形成:

$main = array(
    'head'=> array(
        'id' => 1,
        'type' => 0,
        'customerid' => 10001
    ),
    'address'=> array(
        'city' => "BB",
        'country' => "AA"
    ),
    'orderlines'=> array(
        'line' => array(
            array (
                'prdcode' => "1A2BC",
                'qty' => 5
            ), array (
                'prdcode' => "2C2BC",
                'qty' => 3
            )
        )
    ),
    'attr'=> array(
        array('line' => array(
                array(
                    'size' => "100x200",
                    'color' => "orange"
                ),
                array(
                    'size' => "50x50",
                    'color' => "orange"
                )
            )
        ),
        array('line' => array(
                array(
                    'size' => "75x200",
                    'color' => "blue"
                ),
                array(
                    'size' => "10x50",
                    'color' => "green"
                )
            )
        )
    )
);
$xml = Array2XML::createXML('main', $main);