有没有办法显示pubmed中央xml为html

时间:2014-09-16 20:17:18

标签: php xml pubmed

我想在网页中将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;

有可能吗?

1 个答案:

答案 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源代码。