获取存储在mySQL上的完整XML结构

时间:2016-07-04 02:37:30

标签: php mysql xml

我有这个奇怪的问题,我必须读取存储在mySQL数据库中的XML结构,如下所示:

<geocercaPoligonal>
<nombreGeocerca>Kennedy</nombreGeocerca>
<longitud>-79.89726930856705</longitud>
<latitud>-2.1599807309506396</latitud>
<longitud>-79.9029341340065</longitud>
<latitud>-2.172760363061884</latitud>
</geocercaPoligonal>

当我在PHP上获得查询(使用PDO Fetch:Assoc)并输出结果时,结果如下:

' Kennedy -79.89726930856705 -2.1599807309506396 -2.172760363061884 -79.9029341340065 '

省略所有标签,这会在读取此数据时导致错误,我必须从特定标签获取值,我得到一个XML加载字符串

DB :: getRow是一个准备/执行PDO函数

    $geocerca = DB::getRow('SELECT * FROM GeocercasxUsuario WHERE IdGeocerca = :IdGeocerca', ['IdGeocerca' => $IdGeocerca]);  
$infoXML = simplexml_load_string($geocerca['InformacionGeografica']);
    //The field from the database with the XML string

获取此信息

SimpleXMLElement::__set_state(array(
    'nombreGeocerca' => 'Kennedy',
    'longitud' => array(
        0 => '-79.89726930856705',
        1 => '-2.172760363061884',
    ),
    'latitud' => array(
        0 => '-2.1599807309506396',
        1 => '-79.9029341340065',
    ),
))

它没有正确读取XML结构,我该如何解决这个问题?这是来自PHP还是mySQL?

2 个答案:

答案 0 :(得分:0)

特别是没有正确阅读的内容? SimpleXML对象包含XML中的所有数据。

您可以将对象转换为数组,以便更容易使用,如下所示:

$json_string = json_encode($infoXML);    
$result_array = json_decode($json_string, TRUE);

答案 1 :(得分:0)

在尝试了一些事情之后,我切换了我的select语句来获取这样的特定XML数据:

而不是

SELECT * FROM GeocercasxUsuario WHERE IdUsuario = n (just for example)

我把它改成了

SELECT ExtractValue(InformacionGeografica,'/geocercaPoligonal/latitud') AS Latitud, ExtractValue(InformacionGeografica,'/geocercaPoligonal/longitud') AS Longitud, ...(other fields)... FROM GeocercasxUsuario WHERE IdUsuario = n

这样我得到每个标记值的XML数组,如果你只想要内部值,那么非常有用:)