【发布时间】:2014-05-03 14:11:19
【问题描述】:
这是 XML 结构的 sn-p:
<product category="Desktop">
<name> Desktop 1 (d)</name>
<shipping cost="10.00" carrier="UPS" />
</product>
<product category="Tablet">
<name>Tablet 1(t)</name>
<shipping cost="0" carrier="Fed Ex" />
</product>
将 XMLReader 与 XPATH 一起使用,我正在尝试获取某些 XML 元素属性的值
$reader = new XMLReader;
$reader->open('products.xml');
$dom = new DOMDocument;
$xpath = new DOMXpath($dom);
while ($reader->read() && $reader->name !== 'product') {
continue;
}
while ($reader->name === 'product') {
$node = $dom->importNode($reader->expand(), TRUE);
当 XML 元素中只有一个属性时(例如 <product category="Desktop">),这可以正常工作:
$category = $xpath->evaluate('string(@category)', $node);
但是当一个 XML 元素 (IE) 中有多个属性时,这是行不通的:
$shippingCarrier = $xpath->evaluate('string(/shipping[@cost])', $node);
$shippingCost = $xpath->evaluate('string(/shipping[@carrier])', $node);
echo "Category: " . $category . ". ";
echo "Shipping Carrier: " . $shippingCarrier . ". ";
echo "Shipping Cast: " . $shippingCost . ". ";
}
$reader->next('product');
}
有什么建议吗?谢谢!
【问题讨论】: