我编写了一个程序,它应该输出主要包含基本HTML代码但只有几个PHP命令的PHP代码。因此,我想使用QDomDocument以面向对象的方式编写此文件。
我创建了一个继承自QDomNode的类QDomPHPCode。我已经覆盖save()
,它将包含<?...?>
的PHP代码写入QTextStream。
现在的问题是,要创建这样一个元素,我必须调用一个工厂方法QDomDocument::create...()
,但当然,我自己的类中不存在一个。
为了实现QDomPHPCode节点的这种方法,我考虑了继承QDomDocument,因此观察了QDomDocument的源代码。函数create...()
使用相同的名称调用QDomDocumentPrivate中的函数,因此为了实现自己的create ...()函数,需要在QDomDocumentPrivate中创建一个。后者要求我继承QDomDocumentPrivate的子类,这对#include <QDomDocument>
是不可见的,因此据我所知不能被子类化。
有可能做我想做的事吗?或者它绝对是我自己完全创建PHP文件的更好(或唯一)方式吗?
提前致谢!
答案 0 :(得分:1)
我看到的问题是 PHP文档不是有效的HTML / XML文档,因此您可能会遇到解析错误。 PHP是一个解释器,它解析一个特殊的(PHP)文档,该文档可以生成有效的HTML / xHTML / XML文档。
因此,作为一种解决方法,我建议您在文档中放置一些标记<-- php-code-start -->
和<-- php-code-end -->
(使用QDomDocument),然后在(后处理)。
另一种方法是将PHP开始标记替换为HTML开始注释,但仍需要进行后期处理。