我生成了一个非常复杂的XML(使用XMLWriter for PHP)来自一个非常长的MySQL语句(由于奇怪的Prestashop表组织,有4个内部连接),我对结果文件非常满意。 但是,我希望有机会在构建XML之后,让我们说在XML-> flush()之前我可以做一些基本的字符串查找和替换。
这可能吗?我知道XMLWriter,XMLReader,SimpleXML,但我要问的是在flush()之前在我正在构建的XML文件上用PHP替换字符串。
有什么想法吗? 谢谢 法比奥
答案 0 :(得分:1)
我认为有两种方法可以解决这个问题。
flush
后,查找/替换。$content
,然后再将其传递给编写器函数。谨慎一点,xml上的字符串替换可能是一个坏主意,尤其是正则表达式。也许在调用flush
之后考虑xpath,或者如果您知道在调用编写器之前只对标记或属性名称/值的内容进行操作,那么最好在那里进行查找/替换调用。 / p>
修改强> 这是一个例子。这只是一种方式,但这是一个简单的例子;看看它是否有帮助。
$writer = new XMLWriter();
$writer->openMemory();
$writer->startDocument('1.0');
$writer->setIndent(4);
$writer->startElement('rss');
$writer->writeAttribute('version', '2.0');
$writer->writeAttribute('xmlns:atom', 'http://www.w3.org/2005/Atom');
$writer->startElement("channel");
$writer->writeElement('title', 'Latest Products');
$writer->endElement();
$writer->endElement();
$writer->endDocument();
$doc = $writer->flush();
$doc = str_replace('Latest Products', "Nathan's Products", $doc);
echo $doc;