0

だから私はこれらの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;

しかし、私は何か間違ったことをしていると思います。誰かが私を正しい方向に向けることができますか?

4

2 に答える 2

0

それはただ:

$xml->Vitals[0]->attributes()->Hostname
于 2012-12-13T21:51:32.930 に答える
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。これも機能するはずです。

そして、このスタートであなたはおそらくそれのコツをつかむでしょう。

参考文献:

于 2012-12-13T22:02:35.560 に答える