我的應用程序結構化的方式是,每個組件都以XML形式生成輸出並返回一個XmlWriter對象。在將最終輸出呈現給頁面之前,我組合所有XML並對該對象執行XSL轉換。下面是應用程序結構的簡化代碼示例。組合XmlWriter對象?
將此類XmlWriter對象組合起來是否合理?有沒有更好的方式來構建我的應用程序?最佳解決方案是我不必將單個XmlWriter實例作爲參數傳遞給每個組件。
function page1Xml() {
$content = new XmlWriter();
$content->openMemory();
$content->startElement('content');
$content->text('Sample content');
$content->endElement();
return $content;
}
function generateSiteMap() {
$sitemap = new XmlWriter();
$sitemap->openMemory();
$sitemap->startElement('sitemap');
$sitemap->startElement('page');
$sitemap->writeAttribute('href', 'page1.php');
$sitemap->text('Page 1');
$sitemap->endElement();
$sitemap->endElement();
return $sitemap;
}
function output($content)
{
$doc = new XmlWriter();
$doc->openMemory();
$doc->writePi('xml-stylesheet', 'type="text/xsl" href="template.xsl"');
$doc->startElement('document');
$doc->writeRaw(generateSiteMap()->outputMemory());
$doc->writeRaw($content->outputMemory());
$doc->endElement();
$doc->endDocument();
$output = xslTransform($doc);
return $output;
}
$content = page1Xml();
echo output($content);
更新:
我可以完全放棄的XmlWriter和使用的DomDocument代替。它更靈活,而且似乎表現更好(至少在我創建的粗略測試中)。