使用JQuery从URL和Parse检索XML

时间:2015-02-23 20:56:44

标签: php jquery ajax xml cross-domain

我想从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());
  });
};

什么都没发生。对Zeus的爱有人请帮助我...并且变得容易,我显然不明白如何做一些非常简单的事情。我想将PHP页面上的数据保存到我服务器上的本地文件中,但它无法处理“&lt;”和“&gt;”。我在这里有点失落。

1 个答案:

答案 0 :(得分:0)

在浏览器中打开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>
&lt;PubmedArticle&gt;
    &lt;MedlineCitation Owner="NLM" Status="MEDLINE"&gt;
        &lt;PMID Version="1"&gt;22375842&lt;/PMID&gt;
        &lt;DateCreated&gt;
        ...

要将内容输出为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;