我想从URL中检索XML并使用JQuery进行解析。我的工作假设是,没有跨域访问的不同域无法使用AJAX访问。因此,我创建了一个PHP代码来返回它(我不明白这是我们在2015年必须处理的事情,但也许我只是愚蠢):
header('Content-Type:xml');
$xmlDoc = new DOMDocument();
$xmlDoc->load("http://www.ncbi.nlm.nih.gov/pubmed/22375842?report=xml");
$xmlstring = $xmlDoc->saveXML($xmlDoc->documentElement);
print $xmlstring;
现在我使用AJAX函数来调用该数据:
$.ajax({
url: "loadXML.php", //+ searchString,
dataType: "xml",
type: "GET",
success: parseXml
});
最后,这里是我的parseXML函数,它已经用本地XML页面进行了测试,运行良好。这个代码已经在上重复了很多次
function parseXml(xml){
$(xml).find("Article").each(function()
{
$("#output").append($(this).attr("PubModel") + "<br />");
$("#ArticleTitle").append(": " + $(this).find("ArticleTitle").text() + "<br />");
});
$(xml).find("Author").each(function()
{
$("#Author").append(": " + $(this).find("LastName").text());
$("#Author").append(", " + $(this).find("ForeName").text());
});
};
什么也没发生。为了宙斯的爱,有人请帮帮我……放松点,我显然不知道如何从一开始就做一些非常简单的事情。我曾想过将PHP页面上的数据保存到服务器上的本地文件中,但它无法处理"<"one_answers">"。我在这里有点迷路了。
在浏览器中打开URL,结果内容实际上不是XML,而是<pre>
标记中的转义XML。
代码段:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<pre>
<PubmedArticle>
<MedlineCitation Owner="NLM" Status="MEDLINE">
<PMID Version="1">22375842</PMID>
<DateCreated>
...
要将内容输出为XML,您需要回显文档元素的文本内容:
$xmlDoc = new DOMDocument();
$xmlDoc->load("http://www.ncbi.nlm.nih.gov/pubmed/22375842?report=xml");
header('Content-type: application/xml');
print $xmlDoc->documentElement->textContent;