0

我正在尝试从 Web 服务解析 xml 文件。我正在使用 javascript loadXMLString 函数将 xml 解析为 html。如果我将 xml 代码插入到变量中,则使用本地文件可以正常工作。但是为了从外部链接获取 xml,我在这里使用了 php 函数,如下所示:

<?php 

$request = "http://www.somewebsite.com/feeds/get-cities.php?vendor_key=xxx";
$response = file_get_contents($request);
$xmlstring =  htmlspecialchars($response, ENT_QUOTES);
?>
<script language="javascript">
function loadXMLString(txt)  
{
if (window.DOMParser)
{
  parser=new DOMParser();
  xmlDoc=parser.parseFromString(txt,"text/xml");
}
else // Internet Explorer
{
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async=false;
  xmlDoc.loadXML(txt); 
}
return xmlDoc;
}//function loadXMLString ends

text = <?php $xmlstring;?>

xmlDoc=loadXMLString(text);


document.write("<table border='1'>");
var x=xmlDoc.getElementsByTagName("city");
for (i=0;i<x.length;i++)
{ 
  document.write("<tr style='background:#dddddd;'><td>");
  document.write(x[i].getElementsByTagName("name")[0].childNodes[0].nodeValue);
  document.write("</td><td>");
  document.write(x[i].getElementsByTagName("country")[0].childNodes[0].nodeValue);
  document.write("</td></tr>");
}
document.write("</table>");
</script>

在上面的代码中,我试图将 xml 代码从 php 变量 $xmlstring 插入到 javascript 变量文本中。但它什么也没显示。但是如果我将 xml 代码放在下面的脚本中,它就可以完美地工作:

text="<cities>"
text=text+"<city>";
text=text+"<name>bulga</name>";
text=text+"<country>Giada De Laurentiis</country>";
text=text+"<city_id>2005</city_id>";
text=text+"</city>";
text=text+"</cities>";

有没有人知道我该如何解析它。或者如果有人有更好的解决方案,请也建议我。

4

2 回答 2

0

尝试更改代码中的以下行

text = <?php echo $xmlstring;?>

它应该回显您的变量值。

于 2012-09-20T13:17:57.967 回答
0

在 GBD 的帮助下,我编写了以下代码并开始显示城市列表。但是当我尝试使用不同的 xml 代码时它不起作用。可能有人对此有更好的解决方案

<?php 
function curl_get_file_contents($URL) 
{ 
$c = curl_init(); 
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($c, CURLOPT_URL, $URL); 
$contents = curl_exec($c); 
curl_close($c); 

if ($contents) return $contents; 
else return FALSE; 
} 

$xmlString = curl_get_file_contents("http://www.somesite.com/feeds/get-cities.php?vendor_key=xxx");

?>

<script language="javascript">
function loadXMLString(text) 
{ 
if (window.DOMParser) 
{ 
parser=new DOMParser(); 
xmlDoc=parser.parseFromString(text,"text/xml"); 
} 
else // Internet Explorer 
{ 
xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
xmlDoc.async=false; 
xmlDoc.loadXML(text);  
} 
return xmlDoc; 
}

var text = "<?php echo substr_replace($xmlString,"",0,39);?>";


xmlDoc=loadXMLString(text);


document.write("<table border='1'>");
var x=xmlDoc.getElementsByTagName("city");
for (i=0;i<x.length;i++)
{ 
document.write("<tr style='background:#dddddd;'><td>");
document.write(x[i].getElementsByTagName("name")[0].childNodes[0].nodeValue);
document.write("</td><td>");
document.write(x[i].getElementsByTagName("country")[0].childNodes[0].nodeValue);
document.write("</td></tr>");
}
document.write("</table>");
</script>
于 2012-09-21T07:16:42.403 回答