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