2013-07-02 39 views
-2

我必须使用PHP编写一个通讯运输中心代码。数据库体系结构(我无法更改)是这样构建的:作为Smarty变量的XML节点

表: <customer_prefix>_data:包含数据为XML字符串(包含数据,如客户名称,电子邮件地址等)以及指向TPL-表。每一行都包含一个客户的电子邮件,再加上进一步的内容可以从通讯更改通讯

表: <customer_prefix>_tpl:包含所有的时事通讯(HTML中)与{$ VAR} - 变量应该代表XML节点(和他们的数据,所以<node>value</node>应该变成{$ node},并且这个变量应该保持'值')。再加上XSD架构,用它来验证XML-Strings(我得到了这个工作)。

问题是,XML字符串可能不同于新闻快讯,所有事情都必须动态发生(因为我必须编写一个收集所有数据的Cronjob,呈现邮件内容并发送它)。我被告知使用Smarty,但我不知道如何(动态地)将XML节点转换为Smarty变量...如果有比使用Smarty更好的方法(str_replace不是一个选项)所有的耳朵...

我希望你得到我的问题...如果你需要任何进一步的信息,我会很乐意提供他们。

+1

我明白你的问题,但是,你为什么不能够解决这个问题,目前还不清楚。 Stackoverflow不是一个编程问题的网站,而是一个编程问题网站,那么你的具体编程问题是什么?你的样本数据在哪里?你的示例代码在哪里展示了一个具体问题? – hakre

+1

请参阅http://php.net/book.simplexml和[解析和处理HTML/XML?](http://stackoverflow.com/q/3577641/367456) – hakre

+1

这可能还包含一些指针:[使用XML解析但元素名称是动态的](http://stackoverflow.com/q/13221155/367456) – hakre

回答

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

?> 

这就是它为我工作