继承自QDomNode以在QDomDocument中创建PHP代码片段

时间:2011-04-05 12:10:05

标签: php qt dom

我编写了一个程序,它应该输出主要包含基本HTML代码但只有几个PHP命令的PHP代码。因此,我想使用QDomDocument以面向对象的方式编写此文件。

我创建了一个继承自QDomNode的类QDomPHPCode。我已经覆盖save(),它将包含<?...?>的PHP代码写入QTextStream。

现在的问题是,要创建这样一个元素,我必须调用一个工厂方法QDomDocument::create...(),但当然,我自己的类中不存在一个。

为了实现QDomPHPCode节点的这种方法,我考虑了继承QDomDocument,因此观察了QDomDocument的源代码。函数create...()使用相同的名称调用QDomDocumentPrivate中的函数,因此为了实现自己的create ...()函数,需要在QDomDocumentPrivate中创建一个。后者要求我继承QDomDocumentPrivate的子类,这对#include <QDomDocument>是不可见的,因此据我所知不能被子类化。

有可能做我想做的事吗?或者它绝对是我自己完全创建PHP文件的更好(或唯一)方式吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

我看到的问题是 PHP文档不是有效的HTML / XML文档,因此您可能会遇到解析错误。 PHP是一个解释器,它解析一个特殊的(PHP)文档,该文档可以生成有效的HTML / xHTML / XML文档

因此,作为一种解决方法,我建议您在文档中放置一些标记<-- php-code-start --><-- php-code-end -->(使用QDomDocument),然后在(后处理)。

另一种方法是将PHP开始标记替换为HTML开始注释,但仍需要进行后期处理。