2

我想在网页中将 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,但我什么也得不到(可能是因为第一行以“article....”开头)。当我将第一行更改为

<article>

simplexml_load_file 为其余代码提供了很多错误,并且没有加载任何内容。

我也尝试了以下方法,但什么也没发生:

$xmldata = simplexml_load_file($xmlfile);
$ajournal = (string)$xmldata->article->front->{journal-meta}->{journal-title};
echo $ajournal;

可能吗?

4

1 回答 1

1

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)。Saxon/C 支持 XSLT 2.0。但这不是标准扩展。

2)您可以使用DOM + XPath(或SimpleXML)从XML 中读取数据,并使用PHP 输出HTML 源代码。

于 2014-09-16T21:01:30.590 回答