我可以解析标准的xml文件,但我不能使用这个xml文件。
我该如何解析这个xml。 我想列出'number_name'。
感谢。
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
<numbers>
<number no_id="4" number_name="car" />
<number no_id="6" number_name="bike" />
<number no_id="11" number_name="train" />
<number no_id="32" number_name="plane" />
</numbers>
答案 0 :(得分:0)
PHP的DOM classes非常强大,你应该探索它们。例如,以下是使用DOMXPath的一种解决方案。
<?php
$xml = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
<numbers>
<number no_id="4" number_name="car" />
<number no_id="6" number_name="bike" />
<number no_id="11" number_name="train" />
<number no_id="32" number_name="plane" />
</numbers>
</rss>
XML;
$doc = new DOMDocument();
$doc->loadXML($xml);
$xpath = new DOMXpath($doc);
foreach ($xpath->query('/rss/numbers/number') as $element) {
echo $element->getAttribute('number_name').PHP_EOL;
}
car bike train plane
答案 1 :(得分:0)
DOMXPath的替代方法是使用SimpleXML。它没有DOM版本那么强大,但正如名称所示,它在访问数据时非常简单和容易(虽然创建数据时不那么灵活)。
使用您拥有的样本,两种方法是......
<?php
error_reporting ( E_ALL );
ini_set ( 'display_errors', 1 );
$xml = <<<XML
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
<numbers>
<number no_id="4" number_name="car" />
<number no_id="6" number_name="bike" />
<number no_id="11" number_name="train" />
<number no_id="32" number_name="plane" />
</numbers>
</rss>
XML;
$response = new SimpleXMLElement($xml);
echo "Element access:".PHP_EOL;
foreach ($response->numbers->number as $number ) {
echo $number['number_name'].PHP_EOL;
}
echo "XPath:".PHP_EOL;
$xp = $response->xpath('//number');
foreach ($xp as $number ) {
echo $number['number_name'].PHP_EOL;
}
这给你输出......
Element access:
car
bike
train
plane
XPath:
car
bike
train
plane