php - 将 XML 元素转换为数组

标签 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,但我想使用一段代码来动态处理数据,以便它可以用于为多个表创建插入。

最佳答案

好吧,假设你想要一个结果

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',
    ),
)

关于php - 将 XML 元素转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3477819/

相关文章:

php - 如何从 index.php 调用独白?

php - concat_ws 中的两个部分 MySQL 匹配?

.net - 防止动态列名中的 SQL 注入(inject)

SQL group by 如果值接近

php - 如何将 XML 数据的元素转换为 PHP 中的单个关联数组?

xml - Unix 中的脚本从文件中删除 XML 标签和内容

php - 我是 PHP 新手,收到此错误 :

php - Azure cdn IP地址限制可能吗?

python - 将 timedelta 对象转换为时间对象

c# - XML 字符串到 XML 文档