php XMLReader如何获取特定项?

时间:2016-03-09 12:18:21

标签: php

我为解析xml创建代码。它就像这样

<?php
$xmlDocument = '<?xml version="1.0"?>
                <toys>
                    <toy code="10001">
                        <name>Ben 10 Watch</name>
                        <type>Battery Toys</type>
                    </toy>
                    <toy code="10002">
                        <name>Angry Birds Gun</name>
                        <type>Mechanical Toys</type>
                    </toy>
                </toys>';
    $xml = new XMLReader();
    $xml->XML($xmlDocument);
    while( $xml->read() ) {
    if($xml->name == "toy") {
        print "ID:" . $xml->getAttribute("code") . "<br/>";
        print $xml->readInnerXML() . "<br/>";
        $xml->next();
    }
}
?>

可以正常工作,没有问题,并按预期输出

ID:10001
Ben 10 Watch Battery Toys 
ID:10002
Angry Birds Gun Mechanical Toys 

现在我只想在这个或巨大的xml文件中看到一个项目如何获得一个特定的项目。 为此我创建了这样的代码。

<?php
$xmlDocument = '<?xml version="1.0"?>
                <toys>
                    <toy code="10001">
                        <name>Ben 10 Watch</name>
                        <type>Battery Toys</type>
                    </toy>
                    <toy code="10002">
                        <name>Angry Birds Gun</name>
                        <type>Mechanical Toys</type>
                    </toy>
                </toys>';
$xml = new XMLReader();
$xml->XML($xmlDocument);
$xml->read(0); 
$xml->name == "toy";
print "ID:" . $xml->getAttribute("code") . "<br/>";
print $xml->readInnerXML() . "<br/>";

?>

它没有预期的我只想要打印一个项目。 这该怎么做 。 问题摘要是如何获得特定的一个项目。

1 个答案:

答案 0 :(得分:0)

变化:

$xml->read(0);
$xml->name == "toy";
print "ID:" . $xml->getAttribute("code") . "<br/>";
print $xml->readInnerXML() . "<br/>";

为:

$xml->read();
$xml->read();
if($xml->name == "toy")
{
   print "ID:" . $xml->getAttribute("code") . "<br/>";
   print $xml->readInnerXML() . "<br/>";
}