0
これは私をナットにしています。私のXMLファイルでは、同じ名前の子を入れ子にしました<entry>
と私は最高レベルを取得しようとしています。私がgetElementsByTagName()
と呼ぶと、それはすべてのものをつかむので、私は直接的な子供のために解析しているので、何も正しく動作していないようです。PHP XMLの子パースの問題
<?php
$dom = new DomDocument("1.0", "utf-8");
$dom->loadXML(file_get_contents("export.txt"));
$xpath = new DomXPath($dom);
$entries = $xpath->query("/locations/devices/entry");
$count = 0;
// $entries is a DomNodeList
var_dump($entries);
foreach ($entries as $entry) {
//do stuff with $entry
}
それとも、あなたのオリジナルのアプローチを使用する:あなたは、関連する要素を取得するために、XPathクエリを使用することができますchildNodeが
foreach ($devices as $device) {
foreach($device->childNodes as $child) { // this should be each parent <entry>
$thisC = $child->getElementsByTagName('c') ; // this should be only <c> tags BUT THIS NEVER SEEMS TO WORK
foreach ($thisC->childNodes as $subEntry) {
echo $subEntry->nodeValue ;
}
}
}
I fina llyはそれを働かせましたが、それは醜いです。上記のあなたの提案を使用するつもりです。しかし、getElementsByTagNameをchildNodeから抽出することは可能ですか?私はオリジナルのポストの一番下にサンプルコードをいくつか追加しました。 – rolinger
任意のDomElementオブジェクトでgetElementsByTagNameを使用できます。しかし、別の質問がある場合、いくつかのトラブルシューティングとテストをした上で、それを1つとして投稿してください。 – miken32