我想在网页中将pubmed中央xml文件显示为html。 PubMed中心xml文件看起来像这样(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,但我无法得到任何东西(可能是因为第一行以&#34开头;文章......&#34;)。当我将第一行改为
时<article>
simplexml_load_file为其余代码提供了很多错误,并且没有加载任何内容。
我也尝试了以下内容,但没有发生任何事情:
$xmldata = simplexml_load_file($xmlfile);
$ajournal = (string)$xmldata->article->front->{journal-meta}->{journal-title};
echo $ajournal;
有可能吗?
答案 0 :(得分:1)
SimpleXML只能用于元素节点,因此它会加载文档元素节点。
$article = simplexml_load_file($xmlfile);
$ajournal = (string)$article->front->{journal-meta}->{journal-title};
但SimpleXML对名称空间不是很好。 PubMed XML使用XLink和MathML。
更通用的你可以考虑两种不同的解决方案:
1)如果要将XML转换为另一种XML或HTML,则为该作业定义XSLT。 PHP有ext / xslt来支持XSLT 1.0(使用libxslt2)。 Saxon / C支持XSLT 2.0。但这不是标准的扩展。
2)您可以使用DOM + XPath(或SimpleXML)从XML读取数据并使用PHP输出HTML源代码。