Я хочу показать опубликованный центральный файл XML как HTML на веб-странице. Центральный XML-файл PubMed выглядит следующим образом (первая часть примера XML):
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article article-type="research-article" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">JIP</journal-id>
<journal-title>Journal of International Pharmacology</journal-title>
<issn pub-type="ppub">2043-835X</issn>
<publisher>
<publisher-name>Big Publisher</publisher-name>
<publisher-loc>USA</publisher-loc>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">JIP-3-56</article-id>
Я пытался использовать simplexml_load_file, но ничего не смог получить (возможно, из-за первой строки, начинающейся с «article ….»). Когда я изменил первую строку на
<article>
simplexml_load_file выдает много ошибок для остальной части кода и снова ничего не загружается.
Я также попробовал следующее, но ничего не произошло:
$xmldata = simplexml_load_file($xmlfile);
$ajournal = (string)$xmldata->article->front->{journal-meta}->{journal-title};
echo $ajournal;
Является ли это возможным?
SimpleXML может работать только с узлами элемента, поэтому он загружает узел элемента документа.
$article = simplexml_load_file($xmlfile);
$ajournal = (string)$article->front->{journal-meta}->{journal-title};
Но SimpleXML не очень хорош с пространствами имен. И PubMed XML использует XLink и MathML.
Более общим вы можете рассмотреть 2 разных решения:
1) Если вы хотите преобразовать XML в другой XML или HTML, для этой работы был определен XSLT. PHP имеет ext / xslt для поддержки XSLT 1.0 (использует libxslt2). XSLT 2.0 поддерживается Saxon / C. Но это не стандартное расширение.
2) Вы можете использовать DOM + XPath (или SimpleXML) для чтения данных из XML и использовать PHP для вывода исходного кода HTML.
Других решений пока нет …