Javascript cURL加载跨域远程XML-如何读取和格式化它?
我使用以下命令加载存储在不同服务器上的远程XML文件Javascript cURL加载跨域远程XML-如何读取和格式化它?,javascript,php,xml,curl,Javascript,Php,Xml,Curl,我使用以下命令加载存储在不同服务器上的远程XML文件 <?php $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_URL, "http://pathtofile.com/data.xml"); $xml = curl_exec($curl); curl_close($curl); ?> 如您所见,结果存储在$xml字符串中 我可以通过以
<?php $curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_URL, "http://pathtofile.com/data.xml");
$xml = curl_exec($curl);
curl_close($curl);
?>
如您所见,结果存储在$xml字符串中
我可以通过以下方式在broswer中显示:
<?php echo $xml; ?>
但我需要选择和格式化数据的某些部分
我知道这是可以做到的,我已经阅读了大量关于如何通过xmlhttp和许多其他方式做到这一点的文章,但是我找不到一个适合我需要的方法,因为我的XML文件现在基本上是一个PHP字符串
我想要的是与以下JS脚本相同的功能,如果XML文件存储在本地,它就可以正常工作,但我的不是,它不工作:
<script>
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","http://pathtofile.com/data.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
document.write("<table border='1'>");
var x=xmlDoc.getElementsByTagName("event");
for (i=0;i<x.length;i++)
{
document.write("<tr><td>");
document.write(x[i].getElementsByTagName("date")[0].childNodes[0].nodeValue);
document.write("</td><td>");
document.write(x[i].getElementsByTagName("name")[0].childNodes[0].nodeValue);
document.write("</td></tr>");
}
document.write("</table>");
</script>
有人能给我指出正确的方向或举个例子吗?我只是不知道如何调用$xml字符串以便以这种方式使用
干杯 一种方法是使用DOMDocument类来解析XML字符串并获取节点值 示例1适用于您,用于提取如下事件:
<?php
$dom = new DOMDocument;
$dom->loadXML($xml);
$events = $dom->getElementsByTagName('event');
$rows = '';
foreach ($events as $event) {
$date = $name = '';
foreach ($event->childNodes as $child) {
switch ($child->nodeName) {
case 'date':
$date = $child->nodeValue;
break;
case 'name':
$name = $child->nodeValue;
break;
}
}
$rows .= "<tr><td>${date}</td><td>${name}</td></tr>";
}
echo 'test'.$rows;
?>
第二种解决方案是XSL:
根据需要创建模板并使用XSLTPRocessor类