2013-07-02 4 views
-2

Я должен закодировать центр доставки Newsletter на PHP. Архитектура БД (которую я не могу изменить) построена следующим образом:XML-узлы как переменные Smarty

Таблица: <customer_prefix>_data: Содержит данные в виде XML-строк (с данными, такими как имя клиента, адрес электронной почты и т. Д.) И ссылку на TPL-табл. Каждая строка имеет один адрес электронной почты клиента, а также дальнейшее содержание, которое может изменяться от подписки на рассылку на рассылку

Таблица: <customer_prefix>_tpl: Содержит все рассылки (HTML,) с {$ вар} -Variables, которые должны представлять XML-узлов (и их данные, поэтому <node>value</node> должен стать {$ node}, и эта переменная должна содержать «значение»). Кроме того, XSD Schema, с которой должны быть проверены XML-строки (я получил эту работу).

Проблема в том, что XML-строки могут отличаться от Newsletter to Newsletter, и все должно происходить динамически (так как я должен закодировать Cronjob, который собирает все данные, отображает почтовый контент и затем отправляет его). Мне сказали использовать Smarty, но я не знаю, как (DYNAMICALLY) конвертировать XML-узлы в Smarty Variables ...

Если есть лучший способ, чем использовать 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; 
    } 
} 

?> 

Вот как это работает для меня

Смежные вопросы