作为智能变量的XML节点


XML Nodes as Smarty Variables

我必须用PHP编写一个时事通讯配送中心。DB体系结构(我无法更改)是这样构建的:

表:<customer_prefix>_data:包含XML字符串形式的数据(包括客户名称、电子邮件地址等数据)和指向tpl表的链接。每行保存一封客户电子邮件,以及更多内容,这些内容可以从时事通讯更改为时事通讯

表:<customer_prefix>_tpl:包含所有带有{$var}-变量的时事通讯(HTML),这些变量应表示XML节点(及其数据,因此<node>value</node>应成为{$node},并且此变量应包含"value")。再加上XSD架构,XML字符串应该通过它进行验证(我已经开始工作了)。

问题是,XML字符串可能因时事通讯而异,并且所有事情都必须动态发生(因为我必须编写一个Cronjob来收集所有数据,呈现邮件内容,然后发送)。我被告知要使用Smarty,但我不知道如何(DYNAMICALLY)将XML节点转换为Smarty变量。。。

如果有比使用Smarty更好的方法(str_replace不是一个选项),我会洗耳恭听。。。

我希望你能理解我的问题。。。如果你需要任何进一步的信息,我很乐意提供。

我是这样想的:

<?php 
// foreach loop is started here to count through a number of database entries
// that explains the $i. Just adjust that to your needs
// Get DOMDocument here and validate with XSD Schema
// ...
// Get XML Elements and assign them to Smarty variables
$elements[$key][$i] = $dom->documentElement;
foreach ($elements[$key] as $element) {
  foreach ($element->childNodes as $el) {
    $tpl->assign($el->nodeName, $el->nodeValue);
    $params[$el->nodeName] = $el->nodeValue;
  }
}
?>

这就是它对我的作用