PHP中的XML生成问题

时间:2011-09-21 04:50:55

标签: php xml

我是XML Parsing的新手,所以请在我的问题中指出任何错误。

  1. 我有一个我无法更改的XML文件。
  2. 我编写了一个php脚本,通过get参数获取用户输入,然后搜索xml文件中的适当条目。一旦根据get参数找到条目,它就会为该条目输出合适的XML。
  3. 该脚本适用于大多数情况,当浏览器使用get参数调用脚本时,浏览器会显示与该ID对应的特定XML数据。
  4. 问题:在某些情况下,XML文件包含& 。当调用这些条目时,XML符号会由符号附近的浏览器生成。我想知道究竟是什么导致了这个问题并阻止了格式良好的XML的形成。

    这是我的php代码......

    for($j=0;$j<$length;$j++)
    {
        $name=$parent->childNodes->item($j)->nodeName;
        for($k=0;$k<$num;$k++)
        {
            if($name==$elements_reqd[$k])
            {
                $value=$parent->childNodes->item($j)->textContent;
                $info=array_push_assoc($info,$elements_reqd[$k],$value);
            }
        }
    
    }
    
    
    echo "<LISTING>";
    foreach($info as $key => $value)
    {
        echo "<$key>$value</$key>";
    }
    echo "</LISTING>";
    
    
    function array_push_assoc(&$array, $key, $value){
    $array[$key] = $value;
    return $array;
    }
    

1 个答案:

答案 0 :(得分:0)

5 characters that must be escaped in XML,&amp;成为其中之一。如果$ value是一个类似“This&amp; That”的字符串,它应该在XML中显示为“This &amp; That”

在PHP中实现XML转义的一种方法是:

echo "<$key>".htmlspecialchars($value)."</$key>";

此外,在回显XML输出之前,设置XML的标题并添加文档声明,以便浏览器确切知道XML正在传递:

header ("Content-Type: text/xml");
echo '<?xml version="1.0" encoding="ISO-8859-1"?>';
echo "<LISTING>";
...