非常に単純なレイアウト構造のテキストを含むXMLファイルがあります。
<?xml version='1.0'?>
<page>
<section>
<header>Header</header>
<par>Some paragraph</par>
<par>Another paragraph with <emph>formatting</emph></par>
</section>
</page>
PHPでは、SimpleXMLを使用してこのファイルを読み取ります(他のタグを意図的に削除することに注意してください)。
$page = file_get_contents("page.xml");
if ($page) {
$stripped = strip_tags($page, "<?xml><page><section><header><par><emph>");
$xml = new SimpleXMLElement($stripped);
}
ここで、XML要素を繰り返し処理し、WebサイトのHTMLとして順番に印刷したいと思います。最終結果は次のスニペットになります。
<h1>Header</h1>
<p>Some paragraph
<p>Another paragraph with <i>formatting</i>
SimpleXMLとXPathを調べて、元のXMLファイルをHTML出力にダイジェストできるようにXMLツリーを反復処理する方法を見つけようとしました。やや望ましい結果を出すことができますが、それ<emph></emph>
はなくなったばかりです。どうすれば木にさらに降りることができますか?これまでの私のコード:
foreach ($xml->section as $s) {
echo "<h1>" . $s->header . "</h1>";
foreach ($s->par as $p) {
echo "<p>" . $p;
// Do some magic here to ensure <emph> tags are recognized and responded to properly.
}
}
ヒントやポインタは大歓迎です!ありがとう :-)