php中的XMLWriter之后的字符串替换,在flush()之前

时间:2014-02-14 20:02:37

标签: php mysql xml

我生成了一个非常复杂的XML(使用XMLWriter for PHP)来自一个非常长的MySQL语句(由于奇怪的Prestashop表组织,有4个内部连接),我对结果文件非常满意。 但是,我希望有机会在构建XML之后,让我们说在XML-> flush()之前我可以做一些基本的字符串查找和替换。

这可能吗?我知道XMLWriter,XMLReader,SimpleXML,但我要问的是在flush()之前在我正在构建的XML文件上用PHP替换字符串。

有什么想法吗? 谢谢 法比奥

1 个答案:

答案 0 :(得分:1)

我认为有两种方法可以解决这个问题。

  1. 拨打flush后,查找/替换。
  2. 在调用各种writer functions的每个地方,通过查找/替换逻辑运行$content,然后再将其传递给编写器函数。
  3. 谨慎一点,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;