2015-02-23 27 views
1

我想從URL中檢索XML並使用JQuery解析它。我正在假設不能跨域訪問的不同域名不能通過AJAX訪問。因此,我創建了一個PHP代碼返回它(我不明白這是怎麼我們要應對2015年的東西,但也許我只是啞):從URL中檢索XML並用JQuery解析

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頁面上的數據保存到我的服務器上的本地文件,但它無法處理「<」和「>」。我有點迷失在這裏。

+0

添加'的console.log(XML);'的' parseXml'函數併發布結果。 – Hackerman 2015-02-23 21:02:28

+0

設置內容類型標題的正確方法是'header(「Content-Type:text/xml」)' – roeland 2015-02-23 21:04:23

+0

added console.log(xml);在parseXml函數中,沒有任何改變。還糾正了內容類型標題。 – user2954658 2015-02-23 21:09:06

回答

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; 
+0

謝謝。我可以吻你。 – user2954658 2015-02-23 22:22:51

+0

P.S:之前,輸出看起來像XML,所以我從來沒有想過要改變它。現在輸出只是普通文本。所以我不知道格式正確。該死的夥計。它看起來像普通文本,但這是因爲HTML隱藏了我猜測的標籤。如果你檢查頁面,所有的信息都在那裏。 – user2954658 2015-02-23 22:23:54

+0

我想感謝ThW的父母爲他創造了自己,也感謝了它的存在。我也想感謝SO的創造者。 – user2954658 2015-02-23 22:24:58