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

如何访问地址。列表节点?

  •  0
  • TejpalBh  · 技术社区  · 7 年前

    我想得到 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);
    

    但它表明:

    分析错误:语法错误,意外的“”地址。列表“”(T\u CONSTANT\u ENCAPSED\u STRING),应为标识符(T\u STRING)或变量(T\u variable)”错误

    如何获取 <ADDRESS.LIST> 正确估价?

    1 回复  |  直到 7 年前
        1
  •  0
  •   B. Desai    7 年前

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

    选项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):