解析一个错误的XML文件

时间:2013-05-30 12:46:33

标签: php xml

我有this格式错误的XML文件,其中包含一些我需要的内容。但我似乎无法在PHP中获取SimpleXMLElement对象来做到这一点。此XML文件中的语法假设this one类似,格式正确。

我不断收到Notice: Trying to get property of non-object等错误。

我感兴趣的XML是第一个项目的标题和链接。

提前谢谢!

编辑:我尝试过使用html_entity_decode,但它没有设法解决问题。但我相信最终的解决方案需要这个功能。

1 个答案:

答案 0 :(得分:1)

如果没有看到您的代码,现在就可以说出错误了。无论如何,你指出的XML是有效的,这是一个检索第一个项目节点标题并与XML from the URL your provided链接的工作示例。

  

为了减少这里的粘贴大小,我稍微格式化了XML并且只保留了2个项目节点。请参阅http://codepad.viper-7.com/3UPARI中的完整工作示例。

<?php
$xml = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title>Latest CraftBukkit artifacts for Recommended Build</title>
        <link>http://dl.bukkit.org/downloads/craftbukkit/list/rb/</link>
        <description>The latest "CraftBukkit" artifacts for Recommended Build</description>
        <atom:link href="http://dl.bukkit.org/downloads/craftbukkit/feeds/latest-rb.rss" rel="self" />
        <language>en-us</language>
        <lastBuildDate>Thu, 31 Jan 2013 04:37:54 +0000</lastBuildDate>
        <item>
            <title>Recommended Build for CraftBukkit: 1.4.7-R1.0 (build 2624)</title>
            <link>http://dl.bukkit.org/downloads/craftbukkit/view/01845_1.4.7-R1.0/</link>
            <description>&lt;p&gt;This new version is 12.0 MB big.&lt;/p&gt;</description>
            <pubDate>Thu, 31 Jan 2013 04:37:54 +0000</pubDate>
            <guid>http://dl.bukkit.org/downloads/craftbukkit/view/01845_1.4.7-R1.0/</guid>
        </item>
        <item>
            <title>Recommended Build for CraftBukkit: 1.4.5-R1.0 (build 2543)</title>
            <link>http://dl.bukkit.org/downloads/craftbukkit/view/01707_1.4.5-R1.0/</link>
            <description>&lt;p&gt;This new version is 11.9 MB big.&lt;/p&gt;</description>
            <pubDate>Wed, 19 Dec 2012 11:14:13 +0000</pubDate>
            <guid>http://dl.bukkit.org/downloads/craftbukkit/view/01707_1.4.5-R1.0/</guid>
        </item>
    </channel>
</rss>
XML;

 $sxe = new SimpleXMLElement($xml);
 echo "Title: {$sxe->channel->item[0]->title}\n";
 echo "Link: {$sxe->channel->item[0]->link}\n";

输出

Title: Recommended Build for CraftBukkit: 1.4.7-R1.0 (build 2624)
Link: http://dl.bukkit.org/downloads/craftbukkit/view/01845_1.4.7-R1.0/