1
我有一個XML文件,其中包含嵌套結構中的家族樹數據,並且我想將它解析爲嵌套列表。使用PHP解析XML到嵌套列表
我有以下代碼
<?php
$doc = new DOMDocument();
$doc->load('armstrong.xml');
echo $doc->saveXML();
?>
它會加載下面的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>
但是我想它解析爲以下格式:
<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,所以如果這是一個令人難以置信的簡單問題,我很抱歉!真的很感激任何想法。
編輯
我現在使用下面的遞歸循環,但仍然有問題
$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);
?>
是的,我想是的,謝謝!那麼,我傳遞給outputIndi()我現在擁有的$ doc變量的初始值是多少?當你說名字,bday等不是真正的屬性,這是否意味着你的代碼需要我做getElementsByTagName之類的東西? – 2010-12-10 23:44:51
不太...'$ doc-> documentRoot'。是的,這是完全正確的,'getElementsByTagName'。 – Jonah 2010-12-10 23:50:49
謝謝我試過了,我得到這個錯誤 致命錯誤:在/nfs/c05/h03/mnt/74985/domains/chris-armstrong.com/html/中的非對象上調用成員函數getElementsByTagName() gortin/index.php on line 115 – 2010-12-11 00:02:46