PHP:XML解析可能无效的内容

时间:2012-10-24 13:57:09

标签: php xml xml-parsing

我需要一个项目的模板引擎,它解析sgml-content并转换用户定义的标签,如<ext:grid />。几乎在每种情况下,输入内容都是有效的。常见的问题是链路生成器。链接生成器生成&而不是&amp;,这是我解析问题的主要原因。我无法更改此行为,因为该生成器的输出用于许多其他情况,其中链接需要&而不是&amp;

我尝试过DOMDocument,SimpleXML和xml_parser。他们都退出了实体问题。有任何想法吗?我想要的只是,这个“问题”被解析器简单地忽略了。

测试模板在哪里:

<template xmlns:grid="templates/grid" xmlns:std="templates/std">
    <std:header text="Overview" type="h1" />
    <grid:base width="100%">
        <grid:columns>
        <grid:body>
            <?php foreach($products as $product): /* @var $product Dfm_Shop_Model_Product */ ?>
            <grid:row selectable="1">
                <grid:cell>
                    <div><?php echo $this->esc($product->getTitle()) ?></div>
                </grid:cell>
                <grid:cell>
                    <a href="<?php env()->http()->to(array('controller' => 'Dfm_Shop_Controller_Products', 'method' => 'showEdit')) ?>"><std:img src="icons/pencil.png" hint="Edit" /></a>
                </grid:cell>
            </grid:row>
            <?php endforeach ?>
        </grid:body>
    </grid:base>
</template>

2 个答案:

答案 0 :(得分:1)

在尝试解析文档之前,您是否可以将&替换为&amp;


编辑:只是为了完整性添加,例如QueryPath也是can handle invalid tags

根据上面链接的线程,libxml函数应该也可以工作。

答案 1 :(得分:0)

如果可以,请尝试将cdata与xml一起使用。

<![CDATA[your content]]>

http://www.w3schools.com/xml/xml_cdata.asp