1
ネストされた構造のファミリツリーデータを含むXMLファイルがあります。ネストされたリストに解析したいと思います。PHPをネストされたリストにXMLを構文解析する
私は、次の形式にそれを解析したいただし、次のXMLファイルにロードし、
<?xml version="1.0" encoding="UTF-8"?>
<indi>
<id>id1</id>
<fn>Matt</fn>
<bday>1919</bday>
<dday>2000</dday>
<spouse>Evelyn Ross</spouse>
<family>
<indi>
<id>id2</id>
<fn>Jane</fn>
<bday></bday>
<dday></dday>
<spouse></spouse>
<family>
</family>
</indi>
<indi>
<id>id3</id>
<fn>Jason</fn>
<bday></bday>
<dday></dday>
<spouse></spouse>
<family>
</family>
</indi>
<indi>
<id>id4</id>
<fn>Samuel</fn>
<bday></bday>
<dday></dday>
<spouse></spouse>
<family>
<indi>
<id>id5</id>
<fn>John</fn>
<bday></bday>
<dday></dday>
<spouse></spouse>
<family>
</family>
</indi>
<indi>
<id>id6</id>
<fn>John</fn>
<bday></bday>
<dday></dday>
<spouse></spouse>
<family>
</family>
</indi>
</family>
</indi>
</family>
-であるとして、それを印刷し、次のコード
<?php
$doc = new DOMDocument();
$doc->load('armstrong.xml');
echo $doc->saveXML();
?>
を持っています:
<ul>
<li>
<span class="vcard person" id="id1">
<span class="edit fn">Matt</span>
<span class="edit bday">1956</span>
<span class="edit dday"></span>
<span class="edit spouse">Eunace Fulton</span>
</span>
<ul> ... List of Family ... </ul>
</li>
</ul>
私はPHPには新しく、これは信じられないほど単純な問題だと私はお詫びします!本当に何か考えていただければ幸いです。
EDIT
私は今、次の再帰ループを使用していますが、それでも問題
$doc = new DOMDocument();
$doc->load('armstrong.xml');
function outputIndi($indi) {
$i = new DOMDocument();
$i = $indi;
echo '<li>';
echo '<span class="edit fn">' . $indi->getElementsByTagName("fn") . '</span>'; // name not a real attribute, must access through DOM
echo '<span class="edit bday">' . $indi->getElementsByTagName("bday") . '</span>'; // ditto
// ...
echo '<ul>';
foreach ($indi->getElementsByTagName("family") as $subIndi) { // again, family not a real attribute
outputIndi($subIndi);
}
echo '</ul>';
echo '</li>';
}
outputIndi($doc->documentRoot);
?>
そうですね、ありがとう!私が現在持っている$ doc変数をoutputIndi()に渡す初期値も同じですか?あなたが名前、bdayなどが本当の属性ではないと言うとき、あなたのコードはgetElementsByTagNameのような何かをする必要があるのでしょうか? –
あまり... '$ doc-> documentRoot'です。そして、そうです、それはちょうど正しい、 'getElementsByTagName'です。 – Jonah
ありがとう、私はこのエラーを受け取りました。 致命的なエラー:/nfs/c05/h03/mnt/74985/domains/chris-armstrong.com/html/の非オブジェクトのgetElementsByTagName()メンバ関数を呼び出します。 gortin/index.php on line 115 –