2

pubmed 中央 xml ファイルを Web ページで 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>

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 には、XSLT 1.0 (libxslt2 を使用) をサポートするための ext/xslt があります。XSLT 2.0 は、Saxon/C でサポートされています。ただし、これは標準の拡張機能ではありません。

2) DOM + XPath (または SimpleXML) を使用して XML からデータを読み取り、PHP を使用して HTML ソースを出力できます。

于 2014-09-16T21:01:30.590 に答える