如何访问从外部 XML 接收到的“Dublin Core”命名空间中的信息?

在最后一天,我在 PHP 中进行了一些 XML 解析。我使用外部服务通过 XML 向我提供基于 ISBN 作为搜索词的图书信息(德国国家图书馆提供的服务,需要在请求中包含私人令牌(这不是问题的原因,我已经检查过了)-> https://www.dnb.de/EN/Professionell/Metadatendienste/Datenbezug/SRU/sru_node.html | 我还检查了在 php.ini 中启用了“allow_url_fopen”) .


现在,我的问题是,无论我使用必要的书籍信息进行 XML 解析的任何方法都不会显示,并且我无法在简单 XML 元素对象中使用它(请参阅下面这个屏幕截图中我的代码中的第二个“回声”的结果)。如果我首先将 XML 作为字符串提取,则信息是可见且可访问的(请参阅此屏幕截图中下面代码中第一个“回显”的结果)。目标是能够根据书籍的元素名称(dc:title、dc:creator、dc:publisher、dc:date 等)单独访问有关书籍的信息。在我当前的一段代码中,这是不可能的,因为 PHP 在运行“foreach”循环时会告诉我:“警告:main():节点不再存在”。


我已经看过几篇关于简单 XML 元素对象中命名空间问题的 Stack Overflow 帖子,但我无法针对我在这里面临的问题调整那里提出的解决方案。

我希望有人可以帮助我解决这个问题并指出解决方案,这样我就可以访问 XML 的“dc”命名空间中的信息。


这是我迄今为止使用过的非常简短的 PHP 代码:


$request = file_get_contents("http://externalXML.com"); //URL was replaced

echo "<pre>"; print_r($request); echo "</pre>"; 

$xml = simplexml_load_string($request);

echo "<pre>"; print_r($xml); echo "</pre>"; 

foreach ($xml->records->record->recordData->dc->children() as $child) {

    echo "Inhalt: " . $child . "<br>";

}

这是 XML 的内容(因为我一直在寻找唯一的 ISBN(请参阅“查询”元素),结果只能没有或只有一个,但绝不会更多):


<searchRetrieveResponse>

<version>1.1</version>

<numberOfRecords>1</numberOfRecords>

<records>

    <record>

    <recordSchema>oai_dc</recordSchema>

    <recordPacking>xml</recordPacking>

    <recordData>


干杯,蒂莫


绝地无双
浏览 115回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP