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 に答える