simplexml_load_string警告和带有cdata字符串的错误

时间:2019-02-18 10:33:11

标签: php xml string

我有一个由文章组成的很长的XML,我使用

    $stream = new Stream\File($file, 1024);
    $parser = new Parser\StringWalker();
    $streamer = new XmlStringStreamer($parser, $stream);

    while ($node = $streamer->getNode()) {
        $simpleXmlNode = simplexml_load_string($node);
        //little debug here
        echo (string)$simpleXmlNode->codiceOD;
        //
        if(isset($simpleXmlNode->gruppo)) {
            foreach($simpleXmlNode->gruppo->children() as $child) {
                echo ' - ' . ($child); 
            }
        }
        echo '<br>';
    }

除了文章中的一行内容之外,它都非常有效。

是意大利语

<datiTecnici><![CDATA[POL<->SCHIENALE. MODULATORE DI SPINTA REGOLABILE. MULTIPOSIZIONATORE DI INCLINAZIONE. RIVESTIMENTO IN PELLE SMERIGLIATA, INTERNO IN SPUGNA HR ALTA DENSITA'. SCOCCA IN FAGGIO MULTISTRATO. BASE IN ALLUMINIO PRESSOFUSO VERNICIATO. BRACCIOLI IN POLIURETANO INTEGRALE CON ANIMA IN ACCIAIO. SEDILE REGOLABILE IN ALTEZZA MEDIANTE PISTONE A GAS (CORSA 10CM). PORTATA MAX 150KG.MISURE: H 117-127CM; L 63CM; P 60CM. (H TERRA<->SEDUTA 44-54CM). 21KG.]]></datiTecnici>

它举起

  

警告:simplexml_load_string():实体:第62行:解析器错误:第81行/web/htdocs/www.site.net/home/import/iterator.php中文档末尾的多余内容

     

警告:simplexml_load_string():在第81行的/web/htdocs/www.site.net/home/import/iterator.php中

     

警告:simplexml_load_string():第81行的/web/htdocs/www.site.net/home/import/iterator.php中的^

     

注意:尝试在第82行的/web/htdocs/www.site.net/home/import/iterator.php中获取非对象的属性“ codiceOD”

然后停止。

我注意到,这与CDATA中内容的长度有关。实际上,如果我稍微剪一点弦(还不知道多少),效果很好。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

我通过将大xml拆分为小得多的xml来“解决”。 我不知道为什么现在可以使用