【问题标题】:Parsing Wordpress XML file in PHP在 PHP 中解析 Wordpress XML 文件
【发布时间】:2012-12-22 16:13:23
【问题描述】:

我正在将大型 Wordpress 页面迁移到自定义 CMS。我需要从 Wordpress 导出的大 (20MB+) XML 文件中提取信息。

  1. 我对PHP下的XML没有任何经验,也不知道如何开始读取文件。

  2. Wordpress 文件包含如下结构:

    <excerpt:encoded><![CDATA[Encoded text here]]></excerpt:encoded>
    

我不知道如何在 PHP 中处理这个问题。

【问题讨论】:

    标签: php xml wordpress


    【解决方案1】:

    你可能会用 simplexml 做得很好:

    $xml = simplexml_load_file('big_xml_file.xml');
    foreach ($xml->element as $el) {
        echo $el->name;
    }
    

    更多信息请见php.net

    【讨论】:

      【解决方案2】:

      很遗憾,您的 XML 示例没有通过。

      PHP5 附带两个用于处理 XML 的扩展 - DOM 和“SimpleXML”。
      一般来说,我建议先研究 SimpleXML,因为它是两者中更易于访问的库。

      对于初学者,使用“simplexml_load_file()”将 XML 文件读入对象以进行进一步处理。
      您还应该查看“SimpleXML basic examples page on php.net”。

      【讨论】:

        【解决方案3】:

        我对PHP下的XML没有任何经验

        看看simplexml_load_file()DomDocument

        &lt;excerpt:encoded&gt;&lt;![CDATA[Encoded text here]]&gt;&lt;/excerpt:encoded&gt;

        这对于 XML 解析器来说应该不是问题。但是,您会遇到 WordPress 导出的内容的问题。例如,它可以包含WordPress shortcodes,它将以其原始格式而不是扩展格式出现。

        更好的方法

        确定您要迁移到的内容是否支持从 WordPress 功能导出。许多其他系统都可以 - Drupal、Joomla、Octopress 等。

        【讨论】:

        • 目标是其他人编写的自定义 CMS。如果有短代码 - 我可能会在 PHP 中手动处理它们(不知何故)。
        【解决方案4】:

        虽然亚当是绝对正确的,但他的回答需要更多细节。这是一个简单的脚本,应该可以帮助您。

        $xmlfile  = simplexml_load_file('yourxmlfile.xml');
        foreach ($xmlfile->channel->item as $item) {
            var_dump($item->xpath('title'));
            var_dump($item->xpath('wp:post_type'));
        }
        

        【讨论】:

          【解决方案5】:

          simplexml_load_file() 是创建对象的方法,但您还需要使用 xpath,因为 WordPress 使用名称空间。如果我没记错的话,SimpleXML 不能很好地处理名称空间,或者根本就没有。

          $xml = simplexml_load_file( $file ); $xml->xpath('/rss/channel/wp:category');

          我建议查看 WordPress 用于导入文件的内容。

          https://github.com/WordPress/WordPress/blob/master/wp-admin/includes/class-wp-importer.php

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-05-21
            • 1970-01-01
            • 1970-01-01
            • 2013-09-02
            • 2020-05-22
            • 2010-10-29
            相关资源
            最近更新 更多