【问题标题】:XML Nodes as Smarty Variables [closed]XML节点作为Smarty变量[关闭]
【发布时间】:2013-06-30 01:52:28
【问题描述】:

我必须用 PHP 编写时事通讯运输中心。数据库架构(我无法更改)是这样构建的:

表: <customer_prefix>_data:包含 XML 字符串形式的数据(包含客户姓名、电子邮件地址等数据)和 tpl-Table 的链接。每行包含一封客户电子邮件,以及可以在新闻通讯之间更改的更多内容

表: <customer_prefix>_tpl:包含所有带有 {$var}-Variables 的时事通讯(HTML),这些变量应该代表 XML 节点(以及它们的数据,所以 <node>value</node> 应该变成 {$node} 并且这个变量应该保持“值”) .加上 XSD Schema,应该用它来验证 XML 字符串(我得到了它的工作)。

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

如果有比使用 Smarty 更好的方法(str_replace 不是一个选项),我会全力以赴......

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

【问题讨论】:

  • 我明白了你的问题,但不清楚你为什么不能解决它。 Stackoverflow 不是编程问题网站,而是编程问题网站,那么你的具体编程问题是什么?你的样本数据在哪里?演示具体问题的示例代码在哪里?
  • 这可能还包含一些指针:XML parsing using but Element Names are Dynamic
  • 那么请花点时间回答你自己的问题,留下一个代码示例。
  • 请仅作为答案,不作为问题的编辑。

标签: php xml smarty domdocument


【解决方案1】:

我是这样理解的:

<?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;
  }
}

?>

这对我来说是这样的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多