用PHP读取XML数据,简单

时间:2011-12-12 22:47:46

标签: php xml domdocument

<?xml version="1.0" encoding="utf-8"?>
<mainXML>
    <items>
        <item category="Dekorationer" name="Flot væg" description="Meget flot væg. Passer alle stuer." price="149" />
        <item category="Fritid" name="Fodbold" description="Meget rund bold. Rørt af messi." price="600" />
    </items>
</mainXML>

我怎么读这个?

所以我可以像php循环那样输出类别,名称和描述,例如?

我试着用这个开始:

    $doc = new DOMDocument();
    $doc->load( 'ex.xml' );

    $items = $doc->getElementsByTagName( "item" );
    foreach( $items as $item )
    {
        $categorys = $item->getElementsByTagName( "category" );
        $category = $categorys->item(0)->nodeValue;

        echo $category . " -- ";
    }

3 个答案:

答案 0 :(得分:2)

我推荐PHP的simplexml_load_file()

$xml = simplexml_load_file($xmlFile);
foreach ($xml->items->item as $item) {
    echo $item['category'] . ", " . $item['name'] . ", " . $item['description'] . "\n";
}

更新,错过了额外的标签。

答案 1 :(得分:2)

category是一个属性(不是标记)。见XMLWikipedia。要通过DOMElement获取,请使用getAttribute()Docs

foreach ($items as $item)
{
    $category = $item->getAttribute('category');
    echo $category, ' -- ';
}

description相同,只需更改要获取的属性名称:

foreach ($items as $item)
{
    echo 'Category: ', $item->getAttribute("category"), "\n",
         'Description: ', $item->getAttribute("description"), ' -- ';
}

答案 2 :(得分:1)

这是一个使用PHP的SimpleXML的示例,特别是simplexml_load_string函数。

$xml = '<?xml version="1.0" encoding="utf-8"?>
<mainXML>
    <items>
        <item category="Dekorationer" name="Flot væg" description="Meget flot væg. Passer alle stuer." price="149" />
        <item category="Fritid" name="Fodbold" description="Meget rund bold. Rørt af messi." price="600" />
    </items>
</mainXML>';

 $xml = simplexml_load_string( $xml);

 foreach( $xml->items[0] as $item)
 {
     $attributes = $item[0]->attributes();
     echo 'Category: ' . $attributes['category'] . ', Name: ' . $attributes['name'] . ', Description: ' . $attributes['description'];
 }