php xml列在html的正文部分

时间:2016-03-27 12:22:49

标签: php html simplexml

我有一个xml文件(changes.xml),如下所示:

<changelog>
   <version name="1.0.20">
     <bug id="5">a</bug>
     <bug id="4">b</bug>
     <bug id="3">c</bug>
     <task id="2">d</task>
    </version>
    <version name="1.0.19">
     <bug id="1">a</bug>
    </version>
</changelog>

我用php这样加载此文件:

$file = "path/to/file/changes.xml";
$version = $_GET['version'];
$xml = simplexml_load_file($file);
$path = "/changelog/version[@name='$version']";
$res = $xml->xpath($path);

$object = $res[0];

$bugs = $object->xpath("bug");
$tasks = $object->xpath("task");

之后立即迭代所有节点时
    while(list( , $node) = each($bugs)) {
        echo "NODE:" . $node . "<br>";
    }

我可以打印出来:

NODE:a
NODE:b
NODE:c

但是在html的正文部分,它没有按预期工作:

<?
function h($string) {
    return htmlentities($string, ENT_COMPAT, "UTF-8");
}?>

<?='<?xml version="1.0" encoding="utf-8" ?>' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Changelog Version <?=h($version) ?></title>
<style>
li, h1,h2 { font-family: arial; } 
</style>
</head>
<body>

<h1>Changelog Version <?=h($version) ?></h1>

<? if($bugs) { ?>
<h2>Bugs:</h2>
<ul>
<? while(list( , $node) = each($bugs)) { ?>
    <li>
        <?=h($node) ?>
    </li>
<? } ?>
</ul>
<? } ?>

</body>
</html>

我只得到一个没有内容的<li></li>项:

更改日志版本1.0.20

错误:

        
  •             

输出源在浏览器中显示如下:

NODE:a<br>NODE:b<br>NODE:c<br>
<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Changelog Version 1.0.20</title>
<style>
li, h1,h2 { font-family: arial; } 
</style>
</head>
<body>

<h1>Changelog Version 1.0.20</h1>

<? if($bugs) { ?>
<h2>Bugs:</h2>
<ul>
<? while(list( , $node) = each($bugs)) { ?>
    <li>
            </li>
<? } ?>
</ul>
<? } ?>

</body>
</html>

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

如果查看您生成的HTML。它还有PHP。显然,这应该由服务器运行,而不是可见的。

这与XML解析无关,但只是PHP中的一个设置:要使用<?而不是<?php,您需要启用the short_open_tags setting