将XML元素转换为数组

时间:2010-08-13 14:30:13

标签: php sql xml parsing

我有一些简单的XML,我想在PHP中解析成一个数组,以便我可以构建一些动态SQL插入。

示例XML:

<Data>
    <Key>1</Key>
    <Column>Value 1</Column>
    <Column2>Value 2</Column>
</Data>

数据将通过http POST传递给PHP。

最简单的方法是什么?应始终有一个实例,但希望从一个POST中获取多个实例。

我当然可以构建一些代码来解析特定的PHP,但是我想使用一段代码来动态处理数据,以便它可以用来为多个表创建插入。

2 个答案:

答案 0 :(得分:4)

好吧,假设您想要

的结果
array(
    1 => array(
        'Value 1',
        'Value 2',
    )
)

假设

的结构
<root>
    <Data>
        <!-- key and column entities -->
    </Data>
    <Data>
        <!-- key and column entities -->
    </Data>
    <Data>
        <!-- key and column entities -->
    </Data>
</root>

你可以做点什么(我更喜欢DomDocument):

$dom = new DomDocument();
$dom->loadXml($xmlString);
$dataElements = $dom->getElementsByTagName('Data');
$array = array();
foreach ($dataElements as $element) {
    $subarray = array();
    foreach ($element->childNodes as $node) {
        if (!$node instanceof DomElement) {
            continue;
        }
        $key = $node->tagName;
        $value = $node->textContent;
        $subarray[$key] = $value;
    }
    $array[] = $subarray;
}

通过该编辑,它将转为:

<root>
    <Data>
        <Key>4</Key>
        <Foo>Bar</Foo>
    </Data>
    <Data>
        <Key>6</Key>
        <Bar>Baz</Bar>
    </Data>
</root>

分为:

array(
    array(
        'Key' => 4,
        'Foo' => 'Bar',
    ),
    array(
        'Key' => 6,
        'Bar' => 'Baz',
    ),
)

答案 1 :(得分:1)

SimpleXML是您要搜索的库的名称:http://php.net/manual/en/book.simplexml.php