我基本上必须查询数据库以获取所有活动属性,然后获取每个属性下的内容以获取住宿/体验等部分,并基于此生成基本上的站点地图。
我想知道我是否应该使用纯粹的DOM方法(让我做一百个左右createElement
s,循环内部,appendChild
等)或者只是做一个巨大的字符串连接并验证然后将其呈现为xml?
答案 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作为流程的一部分。所涉及的代码并不复杂,可以与使用它的任何应用程序分开构建和测试。