XML字符串无法解析为SimpleXMlElement

时间:2014-09-18 08:49:57

标签: php xml

我想从XML字符串创建SimpleXMLElement,但代码中断了消息String could not be parsed as XML

所以我试图弄清楚我的字符串中的错误在哪里,但我找不到它。奇怪的是它在phpfiddle.org上工作正常。

这是我尝试运行的代码:

<?php
$obj = new SimpleXMLElement('<auction><auctionMode>shopProduct</auctionMode><categoryId>3345</categoryId><auctionName>TESTENTRY The finding of the "Third eye”.</auctionName><quantity>2</quantity><condition>new</condition><description>cdata_This is a testentry from me, do not buy! sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</description><payoptions></payoptions><shipmethods></shipmethods><priceBuyNow>22</priceBuyNow><salesTax>7.00</salesTax><prodCatId>620311</prodCatId><ifSoldOut>display</ifSoldOut><isApproved>1</isApproved><noIdentifierFlag>1</noIdentifierFlag><weight>0.90</weight><images></images></auction>');
var_dump($obj);
?>

遗憾的是,错误日志没有为此错误提供任何进一步的信息。

我还尝试在<auctionName>标记内设置<![CDATA[]]>,但这并没有改变任何内容。由于中的<auctionName>,我猜它是因为它 ,但我不再确定,因为它正在研究phpfiddle。

这个xml出了什么问题?

1 个答案:

答案 0 :(得分:2)

您可以使用libxml_get_errors()

查看XML解析期间发生的错误

示例:

<?php
libxml_use_internal_errors(true);
$sxe = simplexml_load_string("<?xml version='1.0'><broken><xml></broken>");
if ($sxe === false) {
    echo "Failed loading XML\n";
    foreach(libxml_get_errors() as $error) {
        echo "\t", $error->message;
    }
}
?>

修改

仔细查看文字,您的错误可能来自:"Third eye”

因为您正在使用MS-Word类型的结束引号字符。