2011-09-21 56 views
1

我是XML解析的新手,所以请指出我的问题中的任何错误。PHP中的XML生成问题

  1. 我有一个XML文件,我无法更改。
  2. 我已经写了一个php脚本,通过get参数获取用户输入,然后在xml文件中搜索suitaible条目。一旦找到基于get参数的条目,它会为该条目输出适合的XML。
  3. 对于大多数情况,脚本工作正常,当浏览器使用get参数调用脚本时,浏览器将显示与该ID对应的特定XML数据。

问题:在某些情况下,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; 
} 
+0

您可以使用db吗? –

回答

0

5 characters that must be escaped in XML,&是其中之一。如果$值是像一个字符串“&”它应该在XML显示为“此&amp;那”

一种方式来实现XML在PHP中逃脱是:

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

此外,呼应你的XML之前输出,为XML设置标题并添加文档声明,以便浏览器确切知道XML正在交付:

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