可能重复:
SimpleXML get element content based on attribute value
我查看了几个相关主题但找不到答案。
如何打印,例如美元货币的库存价值?
<?xml version="1.0"?>
<currencies>
<currency id="AUD">
<curr>Australian dollar</curr>
<loc>Australia, Australian Antarctic Territory, Christmas Island, Cocos (Keeling) Islands, Heard and McDonald Islands, Kiribati, Nauru, Norfolk Island, Tuvalu</loc>
</currency>
<currency id="USD">
<curr>United States Dollar</curr>
<loc>American Samoa, British Indian Ocean Territory, Caribbean Netherlands, Ecuador, El Salvador, Guam, Haiti, Marshall Islands, Micronesia, Northern Mariana Islands, Palau, Panama, Puerto Rico, Timor-Leste, Turks and Caicos Islands, United States, U.S. Virgin Islands, Barbados (as well as Barbados Dollar), Bermuda (as well as Bermudian Dollar), Zimbabwe</loc>
</currency>
</currencies>
我可以通过这样做来打印我想要的东西:
foreach($xml as $currency) {
echo $currency[0]->curr;
}
但这并不是我所追求的。另外 - 我的XML标记可以用于我想要实现的目标,还是可以通过更简单的方式实现?
答案 0 :(得分:2)
使用XPath语法执行:http://php.net/manual/simplexmlelement.xpath.php
$string = '<?xml version="1.0"?>
<currencies>
<currency id="AUD">
<curr>Australian dollar</curr>
<loc>Australia, Australian Antarctic Territory, Christmas Island, Cocos (Keeling) Islands, Heard and McDonald Islands, Kiribati, Nauru, Norfolk Island, Tuvalu</loc>
</currency>
<currency id="USD">
<curr>United States Dollar</curr>
<loc>American Samoa, British Indian Ocean Territory, Caribbean Netherlands, Ecuador, El Salvador, Guam, Haiti, Marshall Islands, Micronesia, Northern Mariana Islands, Palau, Panama, Puerto Rico, Timor-Leste, Turks and Caicos Islands, United States, U.S. Virgin Islands, Barbados (as well as Barbados Dollar), Bermuda (as well as Bermudian Dollar), Zimbabwe</loc>
</currency>
</currencies>';
$xml = new SimpleXMLElement($string);
var_dump($xml->xpath('//currency[@id="USD"]');
答案 1 :(得分:0)
尝试
$data = simplexml_load_string($xml);
foreach($data->currencies as $currency) {
// $currency->curr.. etc
]