12

PHP配列をテストしたいときは、次のコードを使用します

    print_r($myarray);

しかし、オブジェクトのデータを見たいと思っていることを知っています

    $xpath = new DOMXPath($doc);
    $myobject = $xpath->query('//*[ancestor-or-self::a]');

私が使うとき

    print_r($myobject);

私はその出力を得る

    DOMNodeList Object ( )

このオブジェクトの値を繰り返し処理して、クエリの結果をテストしたいですか?

4

9 に答える 9

24

print_rDOMNodeList は興味深いオブジェクトであり、 orを使用しても多くの情報は得られませんvar_dump

DOMNodeList オブジェクトのデータを表示するには、さまざまな方法があります。次に例を示します。

$xpath = new DOMXpath($dom);
$dom_node_list = $xpath->query($your_xpath_query);
$temp_dom = new DOMDocument();
foreach($dom_node_list as $n) $temp_dom->appendChild($temp_dom->importNode($n,true));
print_r($temp_dom->saveHTML());

(もちろん、XML を扱っている場合は、saveHTML の代わりに saveXML を使用してください。)

DOMNodeList は、配列のように繰り返すことができます。DOMNodeList オブジェクトからデータを取り出して、配列や stdClass オブジェクトなどの別のデータ構造に入れたい場合は、単純に DOMNodeList の「ノード」を繰り返し処理し、ノードの値を変換したり、新しいデータ構造に追加する前に、(使用可能にしたい) 属性を追加します。

于 2012-07-23T17:38:06.913 に答える
6

次のように単純な foreach を使用して、ノード間を移動できます。

foreach ($myobject as $node) {

  echo $node->nodeValue, PHP_EOL;

} // end foreach 

他の人に役立つことを願っています。コードの重要な部分は

foreach 

そしてアイテム

$node->nodeValue

このクラスの詳細については、以下をご覧ください。

http://php.net/manual/en/class.domnodelist.php

于 2015-08-23T19:39:08.877 に答える
2

誰かがすばらしい getArray() 関数を書きました: http://www.php.net/manual/en/class.domdocument.php#101014

于 2013-05-07T20:03:16.353 に答える
1

再帰関数はどうですか?

Function XMLPrint_r($d_DomNode) {
    print $d_DomNode->$nodeName." ".$d_DomNode->$nodeValue."<br>";
    Foreach($d_DomNode->$childNodes as $d_ChildNode) {
        print " ";
        XMLPrint_r($d_ChildNode);
    }
}

私はこれをテストしませんでしたが、あなたはその考えを理解します。

于 2009-09-02T04:18:53.023 に答える
1

ゲームでは少し遅れていますが、おそらく誰かを助けるでしょう...

dom/xpath オブジェクト自体を使用する場合は、utf-8 出力に注意してください。

nodeValue を直接出力すると、次のように文字化けします。

ìÂÂì ë¹Â디ì¤
ìì ë¹ë””ì¤ í°ì  íì¤

2番目のパラメーター「utf-8」を使用してdomオブジェクトをロードする必要がありますnew \DomDocument('1.0', 'utf-8')が、それでもdomノードリスト/要素の値を出力すると文字が壊れます:

echo $contentItem->item($index)->nodeValue

utf8_decode でラップする必要があります。

echo utf8_decode($contentItem->item($index)->nodeValue) //output: 者不終朝而會,愚者可浹旬而學

于 2016-09-12T14:18:32.437 に答える
0

var_dump($myobject);あなたが探しているものかもしれません

于 2009-09-02T03:57:05.580 に答える
0

xpath クエリが XML 内のどこにも一致しません。

DomXPath::query マニュアルページから:

指定された XPath 式に一致するすべてのノードを含む DOMNodeList を返します。ノードを返さない式は、空の DOMNodeList を返します。

于 2009-09-02T04:03:21.497 に答える