PHP simplexml_load_string()有双引号问题

时间:2016-08-12 12:48:25

标签: php xml simplexml-load-string

我试图用simplexml_load_string加载一些xml文件,但是如果在我使用双引号的属性中我有问题...事情是我(想)我之前用双引号和工作做过很好,所以我不知道/理解为什么会失败。这是我试图加载的xml:

<?xml version="1.0" encoding="UTF-8"?>
<order>
    <products>
        <product title=”Rimmel Lasting Finish Lipstick 4g” price=”4.99”>
            <category>Lipstick</category>
        </product>
        <product title=”Sebamed Anti-Dandruff Shampoo 200ml” price=”4.99”>
            <category>Shampoo</category>
        </product>
    </products>
    <total>9.98</total>
</order>

我得到的错误是: PHP Warning: simplexml_load_string(): Entity: line 4: parser error : AttValue: &quot; or ' expected in Orders.php on line 42

然后错误继续(如果有任何需要,我会发布它)。 PHP是:

$getXmlString = file_get_contents("../xmls/order_x.xml");
$orderLoaded = simplexml_load_string($getXmlString);
echo 'xml: '.$orderLoaded;

由于解析器错误,这不会打印任何内容... 有线索吗?

1 个答案:

答案 0 :(得分:2)

这是因为你的XML使用智能引号而不是双重qoutes

<?xml version="1.0" encoding="UTF-8"?>
<order>
    <products>
        <product title=”Rimmel Lasting Finish Lipstick 4g” price=”4.99”>
            <category>Lipstick</category>
        </product>
        <product title=”Sebamed Anti-Dandruff Shampoo 200ml” price=”4.99”>
            <category>Shampoo</category>
        </product>
    </products>
    <total>9.98</total>
</order>

应该是

<?xml version="1.0" encoding="UTF-8"?>
<order>
    <products>
        <product title="Rimmel Lasting Finish Lipstick 4g" price="4.99">
            <category>Lipstick</category>
        </product>
        <product title="Sebamed Anti-Dandruff Shampoo 200ml" price="4.99">
            <category>Shampoo</category>
        </product>
    </products>
    <total>9.98</total>
</order>