0

XML ファイルを検索し、指定された条件に一致するレコードのすべてのデータを返そうとしています。これは私が今持っているようなものです。うまく検索できますが、同じレコード内の他の属性の値を取得する方法がわかりません。

使用される XML ファイルのサンプルを次に示します。

<routing>
    <route>
        <url>/homepage</url>
        <file>/pages/home.php</file>
    </route>
</routing>

ドキュメント内の特定のレコードを検索する方法を次に示します。それらは完全に見つかりますが、一致したレコードからデータを取得するにはどうすればよいですか?

    $qExp = '//route[url="/homepage"]';
    foreach($inst->query($qExp) as $key=>$node) {
        print_r($node);
        // echo $node->file->nodeValue;
        // how would I do this? I can't seem to
        // access specific attributes at all
        // inside of the DOMXPath class
    }

DOMXPath オブジェクトは に格納されますが、このオブジェクト$nodeを使用しDOMXPathて他の属性値を取得するにはどうすればよいですか? たとえば、このクエリでは最初の XML レコードが返されますが、file属性の値を具体的に取得するにはどうすればよいでしょうか。利用可能な関数があることは知ってnodeValueいますが、それはすべてのフィールドの値を一緒に返し、どの部分がどのフィールドに属しているかを並べ替えることができません。

助けてくれてありがとう、これは本当に私を悩ませてきました。

4

1 に答える 1

-1

素敵でシンプルな解決策として、次を使用しますsimplexml

$xml = simplexml_load_string($x); // assuming XML in $x
$result = $xml->xpath("//route[url='/homepage']");

// loop
foreach ($result as $r) echo $r->file,"<br />";

// direct access
echo $result[0]->file,"<br />";

ライブ デモ @ http://codepad.viper-7.com/ZRrUPlを参照してください。

于 2013-04-06T22:50:42.623 に答える