0

xpath と配列について質問があります。私が疑問に思っていたのは、いくつかの simpleXML で xpath を使用して、ノード名とその値の連想配列を返すことができるかどうかということでした。たとえば、次の XML があるとします。

<element1 page="1">blah</element1>
<element2 page="1">blah blah</element2>
<element3 page="2">blah</element3>
<element4 page="3">blah blah</element4>

今私が行けば$xml->xpath('//node()[@page="1"]');、次のような配列が返されます:

array( 0 => 'blah' , 1 => 'blah blah' );

以下のような配列を取得することは可能ですか?

array( element1 => 'blah' , element2 => 'blah blah' );

助けてくれてありがとう!

4

2 に答える 2

1

それをその種の配列にフェッチすることはできないと思いますが (そこに配置するタグ、子ノード、属性などを PHP に指示する必要があります)、DOMXPath クラスを使用して DOMNode 要素をフェッチできます。DOMNodeListオブジェクト:

$document = new DOMDocument();
$document->load($myXmlFile);
$xpath = new DOMXPath($document);

$result = $xpath->query('//node()[@page="1"]');
var_dump($result->length); // int(2)
var_dump($result->item(0)->tagName); // string(8) "element1"
var_dump($result->item(1)->tagName); // string(8) "element2"
于 2009-07-20T14:24:47.127 に答える