我想从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出了什么问题?
答案 0 :(得分:2)
您可以使用libxml_get_errors()
示例:
<?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类型的结束引号字符。