Получить XML с URL и проанализировать с помощью JQuery

Я хотел бы извлечь XML из URL и проанализировать его с помощью 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 и работает нормально. Этот код был повторен на SO много раз:

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 в локальный файл на моем сервере, но это не удалось обработать «<«и»> «. Я немного потерян здесь.

1

Решение

Открыв URL в браузере, вы получите не XML, а экранированный XML в <pre> тег.

Snippet:

<?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

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector