使用纯DOM方法或字符串连接生成非常动态的xml文件是否更好?

时间:2010-08-12 17:20:52

标签: php xml dom

我基本上必须查询数据库以获取所有活动属性,然后获取每个属性下的内容以获取住宿/体验等部分,并基于此生成基本上的站点地图。

我想知道我是否应该使用纯粹的DOM方法(让我做一百个左右createElement s,循环内部,appendChild等)或者只是做一个巨大的字符串连接并验证然后将其呈现为xml?

4 个答案:

答案 0 :(得分:4)

就个人而言,我总是尝试使用DOM方法生成XML。原因很简单,它为您执行所有必要的转义和实体生成。

$xmlBlock = '<foo>';
$xmlBlock .= '<bar>'.htmlspecialchars('baz', ENT_NOQUOTES, 'utf-8', false).'</bar>';
$xmlBlock .= '</foo>';

与:相比:

$node = $dom->createElement('foo');
$node->appendChild($dom->createElement('bar', 'baz'));

但话说回来,这只是我个人的偏好......

答案 1 :(得分:2)

在大多数情况下,我会用字符串生成它。

$myXml  = "<?xml ...... ";
$myXml .= "<rootNode>";
$myXml .= "<child>";

等..

答案 2 :(得分:1)

性能方面,字符串连接然后对字符串进行双遍传递处于劣势。 DOM方法的XML验证是自动完成的。

答案 3 :(得分:0)

如果您关注性能,请使用output buffering构建XML内容。此外,构建或查找维护标记堆栈,执行XML转义等的简单库,以便您可以保证格式良好的输出。这样,除非确实需要验证与模式或DTD的一致性,否则可以跳过验证过程。

我不知道PHP中的任何内容,但Android XmlSerializer是生成保证格式良好的XML所需的最小API的良好模型,而不会在内存中构建DOM作为流程的一部分。所涉及的代码并不复杂,可以与使用它的任何应用程序分开构建和测试。