代码之家  ›  专栏  ›  技术社区  ›  KhorneHoly

XML字符串无法解析为SimpleXMlElement

  •  1
  • KhorneHoly  · 技术社区  · 12 年前

    我想从一个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[]]> 标签,但这并没有改变什么。我猜是因为 ” 在 <拍卖名称> ,但我不再确定,因为它在phpfiddle上工作。

    这个xml有什么问题?

    1 回复  |  直到 6 年前
        1
  •  2
  •   nl-x    12 年前

    您可以使用 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类型的结束引号字符。

    推荐文章