从xml文件中获取数据

时间:2014-07-10 06:26:31

标签: php xml

在php脚本中如何读取XML文档并将其转换为对象并访问获取的对象以获取其数据?

<?php
$xml ='<?xml version="1.0" encoding="UTF-8" ?>
<data request-id="ID">
<data name="Name1"
    d1="0"
    d2="0231234"
    d3="32584">
    <data name="Name2"
        d4="231234"
        d5="2012-06-06 18:18:10.000607"
        d6="3b048653-aaa9-485b-b0dd-d16e068230e9" />
    </data>
</data>';
$xml = simplexml_load_string($xml); 
//how to get the data d1? or d4? from the obtained object
?> 

4 个答案:

答案 0 :(得分:2)

您可以使用此代码段:

<?php
$xmlstring = file_get_contents($filename);
$xml = simplexml_load_string($xmlstring);
$json = json_encode($xml);
$object = json_decode($json);

答案 1 :(得分:1)

尝试使用此功能 -

$xml ='<?xml version="1.0" encoding="UTF-8" ?>
<data request-id="ID">
<data name="Name1"
    d1="0"
    d2="0231234"
    d3="32584">
    <data name="Name2"
        d4="231234"
        d5="2012-06-06 18:18:10.000607"
        d6="3b048653-aaa9-485b-b0dd-d16e068230e9" />
    </data>
</data>';
function xmlToArray($input, $callback = null, $recurse = false) {
                    $data = ((!$recurse) && is_string($input))? simplexml_load_string($input, 'SimpleXMLElement', LIBXML_NOCDATA): $input;
                    if ($data instanceof SimpleXMLElement) $data = (array) $data;
                    if (is_array($data)) foreach ($data as &$item) $item = xmlToArray($item, $callback, true);
                    return (!is_array($data) && is_callable($callback))? call_user_func($callback, $data): $data;
            }
$xml = xmlToArray($xml);
echo $xml['data']['@attributes']['d1'];
echo '<br/>';
echo $xml['data']['data']['@attributes']['d4'];

答案 2 :(得分:0)

使用

$myxml = simplexml_load_string($xml); 
echo $myxml->data[1]['d1'];
echo $myxml->data[1]['d2'];
echo $myxml->data[1]['d3'];
echo $myxml->data[2]['d4'];

参考:How to parse XML with PHP5

答案 3 :(得分:0)

尝试: -

echo $xml['data']['@attributes']['d1'];
echo '<br/>';
echo $xml['data']['data']['@attributes']['d4'];