首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用php simplexml解析Project Gutenberg rdf?

如何用php simplexml解析Project Gutenberg rdf?
EN

Stack Overflow用户
提问于 2013-01-08 18:22:01
回答 1查看 885关注 0票数 1

我正在尝试使用Basic SimpleXML usage这样的simplexml来解析古腾堡项目的catalog.rdf

代码语言:javascript
运行
复制
$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 (source of rdf here):

代码语言:javascript
运行
复制
<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>
EN

回答 1

Stack Overflow用户

发布于 2013-03-09 06:35:37

你在你的问题@giorgio79上取得进展了吗?您的数据一直都在那里,但是print_r是用来查看变量的,而不是对象。这个版本的代码展示了如何将最终print_r中的对象转换为字符串,然后使用htmlentities使标记可读。输出与输入相同,因为到目前为止,唯一的操作是一个简单的复制。祝你好运,从这里开始吧!

代码语言:javascript
运行
复制
<?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>';
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14212798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档