1

この基本的なSimpleXMLの使用法のように、プロジェクトグーテンベルクのcatalog.rdfをsimplexmlで解析しようとしています:

$dom = new DOMDocument;
$dom->loadXML($etext_rdf);
if (!$dom) {
    echo 'Error while parsing the document';
    exit;
}

$etext= simplexml_import_dom($dom);
print_r($etext);

しかし、$etext は常に空です。ヒントはなぜですか?これが私がテストしているloadXML $etext_rdfです( rdfのソースはこちら):

<pgterms:etext rdf:ID="etext26783">
  <dc:publisher>&pg;</dc:publisher>
  <dc:title rdf:parseType="Literal">The Story of the Kearsarge and Alabama</dc:title>
  <dc:creator rdf:parseType="Literal">Browne, A. K.</dc:creator>
  <pgterms:friendlytitle rdf:parseType="Literal">The Story of the Kearsarge and Alabama by Browne</pgterms:friendlytitle>
  <dc:language><dcterms:ISO639-2><rdf:value>en</rdf:value></dcterms:ISO639-2></dc:language>
  <dc:subject>
    <rdf:Bag>
      <rdf:li><dcterms:LCSH><rdf:value>Kearsarge (Sloop)</rdf:value></dcterms:LCSH></rdf:li>
      <rdf:li><dcterms:LCSH><rdf:value>Alabama (Screw sloop)</rdf:value></dcterms:LCSH></rdf:li>
      <rdf:li><dcterms:LCSH><rdf:value>United States -- History -- Civil War, 1861-1865 -- Naval operations</rdf:value></dcterms:LCSH></rdf:li>
    </rdf:Bag>
  </dc:subject>
  <dc:subject><dcterms:LCC><rdf:value>E456</rdf:value></dcterms:LCC></dc:subject>
  <dc:created><dcterms:W3CDTF><rdf:value>2008-10-06</rdf:value></dcterms:W3CDTF></dc:created>
  <pgterms:downloads><xsd:nonNegativeInteger><rdf:value>20</rdf:value></xsd:nonNegativeInteger></pgterms:downloads>
  <dc:rights rdf:resource="&lic;" />
</pgterms:etext>
4

1 に答える 1

2

@ giorgio79、あなたはあなたの質問に前進しましたか?データはずっとそこにありましたが、print_rは変数を表示するためのものであり、オブジェクトを表示するためのものではありません。このバージョンのコードは、最終的なprint_rのオブジェクトを文字列に変換し、htmlentitiesを使用してマークアップを読み取り可能にする方法を示しています。これまでの操作は単純なコピーのみであるため、出力は入力と同じです。ここから頑張ってください!

<?php
$etext_rdf = file_get_contents('http://www.gutenberg.org/ebooks/26783.rdf');
$dom = new DOMDocument;
$dom->loadXML($etext_rdf);
if (!$dom) {
    echo 'Error while parsing the document';
    exit;
}

$etext= simplexml_import_dom($dom);
// do your manipulations on the simpleXML object here..
echo '<pre>';
    print_r( htmlentities($etext->saveXML()));
echo '</pre>';
于 2013-03-08T22:35:36.983 に答える