代码之家  ›  专栏  ›  技术社区  ›  andyknas

将XML元素转换为数组

  •  3
  • andyknas  · 技术社区  · 14 年前

    示例XML:

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

    数据将通过httppost传递给PHP。

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

    2 回复  |  直到 14 年前
        1
  •  4
  •   ircmaxell    14 年前

    好吧,假设你想要一个

    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',
        ),
    )
    
        2
  •  1
  •   tamasd    14 年前

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