【问题标题】:How to access to ADDRESS.LIST node?如何访问 ADDRESS.LIST 节点?
【发布时间】:2018-05-08 09:14:20
【问题描述】:

我想获取ADDRESS.LIST XML 节点值。我的示例 XML 如下:

$result = "<ENVELOPE>
<HEADER>
    <VERSION>1</VERSION>
    <STATUS>1</STATUS>
</HEADER>
<BODY>
    <DESC></DESC>
    <DATA>
        <MESSAGE xmlns:UDF=\"TallyUDF\">
            <ADDRESS.LIST TYPE=\"String\">
                <ADDRESS>address text</ADDRESS>
                <ADDRESS>address text</ADDRESS>
                <ADDRESS>address text</ADDRESS>
                <ADDRESS>address text</ADDRESS>
            </ADDRESS.LIST>
        </MESSAGE>
    </DATA>
</BODY>
</ENVELOPE>";

我正在尝试使用 PHP 作为:

$repaired = str_replace("&#4; ", "", $result);
$array_data = simplexml_load_string($repaired, 'SimpleXMLElement', LIBXML_NOERROR);

$address    = [];

$status = (string) $array_data->HEADER->STATUS;

if (strpos($status, '1') !== false) {

    $i = 0; 
    $address = array();
    foreach ($array_data->BODY->DATA->MESSAGE->'ADDRESS.LIST' as $item):

        $address[$i]['ADDRESS']     = (string) $item->ADDRESS;

        $i++;
    endforeach; 

    $response["status"] = $status;
    $response["data"]['address']  = $address;
}

echo json_encode($response);

但它显示:

解析错误:语法错误,意外的“ADDRESS.LIST”(T_CONSTANT_ENCAPSED_STRING),需要标识符(T_STRING)或变量(T_VARIABLE)”错误

如何正确获取&lt;ADDRESS.LIST&gt; 值?

【问题讨论】:

  • 使用花括号{'blah-blah.di.blah'} 来访问诸如此类的属性
  • 我更改了标题以解释您想要获得的内容,缩进 XML 以便更好地阅读,使用 &gt; 格式化错误消息并删除一些无用的文本。

标签: php json xml-parsing extract


【解决方案1】:

您可以存储值变量然后使用,也可以通过{} 使用它

选项1:

$address_list = "ADDRESS.LIST";
foreach($array_data->BODY->DATA->MESSAGE->$address_list as $item):

选项 2:

foreach($array_data->BODY->DATA->MESSAGE->{'ADDRESS.LIST'} as $item):

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-11
    • 2023-03-29
    • 1970-01-01
    • 2019-01-21
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多