有什么方法可以不从simplexml
对象中获取节点值吗?
$amount = (int)$item->amount;
我认为这不是很漂亮,我正在寻找一种更清洁的方法,但到目前为止还没有找到任何东西!
//wouldn't this be nice?
$amount = $item->amount->getValue();
提前致谢。
最佳答案
没有。 SimpleXml
只公开了一个非常有限的 API 来处理节点。它的隐式 API 被认为是一个特性。如果您需要对节点进行更多控制,请使用 DOM
:
$sxe = simplexml_load_string(
'<root><item><amount>10</amount></item></root>'
);
$node = dom_import_simplexml($sxe->item->amount);
var_dump($node->nodeValue); // string(2) "10"
dom_import_simplexml
函数会将节点从 SimpleXmlElement
转换为 DOMElement
,因此您仍然以某种方式在幕后转换。但是,当从 DOMElement
获取内容时,您不再需要显式进行类型转换。
旁注:我个人认为 DOM
优于 SimpleXml
,我建议不要使用 SimpleXml
但是 DOM
马上。如果您想熟悉它,请查看 some of my previous answers about using DOM .
关于php - simplexml 无需类型转换即可获取节点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4722653/