所以我有这些simplexmlelement对象。我无法让它工作如何解析一个特定的元素。
SimpleXMLElement Object
(
[Generation] => SimpleXMLElement Object
(
[@attributes] => Array
(
[version] => 3.1.0-alpha3
[timestamp] => 1355434832
)
)
[Options] => SimpleXMLElement Object
(
[@attributes] => Array
(
[tempFormat] => c
[byteFormat] => auto_binary
[refresh] => 60000
[showPickListTemplate] => true
[showPickListLang] => true
)
)
[UsedPlugins] => SimpleXMLElement Object
(
)
[Vitals] => SimpleXMLElement Object
(
[@attributes] => Array
(
[Hostname] => domain.tld
[IPAddr] => 127.0.0.1
[Kernel] => 2.6.32-11-pve (SMP) x86_64
[Distro] => Ubuntu 12.04.1 LTS
[Distroicon] => Ubuntu.png
[Uptime] => 1993669.51
[Users] => 1
[LoadAvg] => 0.08 0.02 0.01
[CPULoad] => 0
)
)
....etc...
)
我做了类似这样的事情来访问主机名,例如:
echo $xml->Generation->Vitals[0]->Hostname;
但我认为我做错了什么。有人能指出我正确的方向吗?
答案 0 :(得分:0)
它只会是:
$xml->Vitals[0]->attributes()->Hostname
答案 1 :(得分:0)
我不完全确定您是否必须坚持使用SimpleXml object
,但如果不这样做,请查看DOMDocument
和DOMXPath
组合。我很喜欢。要说清楚,很难进入,但只要你掌握了它,你就会喜欢它。
你可以这样做:
$doc = new DOMDocument();
$doc->load('http://www.example.com/file.xml');
$xpath = new DOMXPath($doc);
$result = $xpath->query('//Vitals');
// print them all
foreach ($result as $r){
echo $r->getAttribute('Hostname'); //your desired value
}
// or just the first one
echo $result->item(0)->getAttribute('Hostname');
你也可以让查询略大一些,以便立即获取属性://Vitals@Hostname
也可以正常工作。
通过这个开始你可能会掌握它。
进一步阅读: