Php 性能-通过DOMDocument与纯字符串生成xml

Php 性能-通过DOMDocument与纯字符串生成xml,php,xml,domdocument,Php,Xml,Domdocument,我正在后端生成一个XML字符串,并将其作为响应返回给浏览器。 从性能的角度来看,我的问题是,哪种方法更好:使用DOMDocument生成XML还是将XML作为字符串生成 例如,我可以生成一个简单的XML,如下所示 $value = 'My Name'; $attribute = 'Mn'; $xml = '<?xml version="1.0" encoding="UTF-8" ?><root>'; $xml .= "<name initialize=\"$attr

我正在后端生成一个XML字符串,并将其作为响应返回给浏览器。
从性能的角度来看,我的问题是,哪种方法更好:使用DOMDocument生成XML还是将XML作为字符串生成

例如,我可以生成一个简单的XML,如下所示

$value = 'My Name';
$attribute = 'Mn';
$xml = '<?xml version="1.0" encoding="UTF-8" ?><root>';
$xml .= "<name initialize=\"$attribute\">$value</name>";
$xml .= '</root>';
return $xml;
输出可以在IE兼容的视图模式下使用,甚至可以在quirks模式下使用,我认为比较每种方法可能很重要
如果有人能告诉我每种方法(性能、速度等)的优缺点,那将非常有帮助。
非常感谢。我会使用字符串操作。DOM很适合解析和可能修改现有的XML文档。对于创建,纯字符串操作的开销比DOM小

但是,在某些情况下,xml的创建可能更加复杂,并且涉及应用程序的多个组件,这些组件在呈现之前共享未完成的xml。在这种情况下,DOM的开销可能是值得的。。这取决于


在您在问题中展示的简单示例中,我将使用字符串操作。

另一种选择是简单的基准测试应该足够简单,我认为?很明显,使用字符串会更快。准确地说,对于生成较小的文档,简单的连接是最有效的,尽管使用DOMDocument或XMLWriter还有一个额外的好处,那就是为您正在创建的xml提供验证检查(如果您试图生成无效的标记,则不会从连接中得到错误);对于较大的数据量(和较大的文档),XMLWriter将为您提供更好的内存控制,最好使用XMLWriter这样的库。它将处理诸如特殊字符转义之类的问题,“手写”XML经常出错,而且它可能比字符串串联更有效,因为字符串串联可能导致大量长拷贝操作。谢谢您的回答。根据上面的注释,我猜XMLWriter更好,这将给我更好的内存控制,字符串的可能问题是长字符串的串联内存分配和使用特殊字符的可能性。我提供的示例只是为了澄清我的问题,否则我的示例就完全不同和复杂了。如果更复杂,可以使用模板引擎。毫无疑问,许多节点对象及其内容(作为字符串)消耗的内存肯定比普通字符串操作要多
$value = 'My Name';
$attribute = 'Mn';
$xml = new DOMDocument('1.0', 'UTF-8');
$root = $xml->appendChild($xml->createElement('root'));
$newnode = $xml->createElement('name', $value);
$attrib = $xml->createAttribute('initialize');
$attrib->value = $attribute;
$newnode->appendChild($attrib);
$root->appendChild($newnode);
return $xml->saveXML();