【问题标题】:Retrieve XML from URL and Parse with JQuery从 URL 中检索 XML 并使用 JQuery 进行解析
【发布时间】:2015-04-25 08:05:51
【问题描述】:

我想从 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 页面上的数据保存到我服务器上的本地文件中,但它无法处理“”。我有点迷路了。

【问题讨论】:

  • parseXml函数中添加console.log(xml);并发布结果。
  • 设置内容类型头的正确方法是header("Content-Type: text/xml")
  • 添加了 console.log(xml);在 parseXml 函数中,没有任何改变。还更正了内容类型标题。

标签: php jquery ajax xml cross-domain


【解决方案1】:

在浏览器中打开 URL,结果内容并不是真正的 XML,而是在 &lt;pre&gt; 标记中转义的 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;

【讨论】:

  • 谢谢。我可以吻你。
  • P.S:之前,输出看起来像 XML,所以我从没想过要改变它。现在输出只是常规文本。所以我不知道它的格式是否正确。该死的家伙。它看起来像普通文本,但那是因为 HTML 隐藏了我猜的标签。如果您检查页面,所有信息都在那里。
  • 我要感谢 ThW 的父母创造了他,也感谢互联网的存在。我还要感谢 SO 的创建者。
  • :-) 浏览器如何呈现它取决于浏览器和内容类型。使用application/xmltext/xml,许多浏览器会将其呈现在XML 视图中。但是如果他们将其呈现为网页,他们将忽略未知标签并仅显示文本内容。
猜你喜欢
  • 2013-04-06
  • 1970-01-01
  • 2013-03-25
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多