解析XML文件并将其转换为对象数组

时间:2017-03-30 14:54:57

标签: php json xml

我正在尝试获取XML内容并将其组织为对象以在json文件中检索它们。

XML结构:

<lorem date="2017-01-01">
    <ipsum key="a">0001</ipsum>
    <ipsum key="b">0002</ipsum>
    <ipsum key="c">0003</ipsum>
    <ipsum key="d">0004</ipsum>
</lorem>

和PHP

<?php
    $URL = simplexml_load_file("http://www.example.com");
    foreach($URL -> lorem -> ipsum as $item){
        $arr = array($item["key"] => $item["value"]);
    }
    echo json_encode($arr);
?>

最后,我想通过以下结构返回json:

{
"a": "0001",
"b": "0002",
"c": "0003",
"d": "0004",
}

但我仍然坚持如何在ipsum标签之间检索值。而且上面的代码也没有按预期工作。

1 个答案:

答案 0 :(得分:1)

像这样更改你的代码

<?php
    $URL = simplexml_load_file("http://www.example.com");
    foreach($URL->ipsum as $item){
        $arr[] = array((string)$item["key"] => (string)$item);
    }
    echo json_encode($arr);


    //for the format you show above
    $URL = simplexml_load_file("http://www.example.com");
    $arr = new stdClass();
    foreach($URL->ipsum as $item){
        $key = (string)$item["key"];
        $arr->{$key} = (string)$item;
    }
    echo json_encode([$arr]);
?>
  • 通过(string)$item["key"]始终访问节点属性
  • 通过$item->subnode获取子节点
  • 通过(string)$item获取当前节点的内容