Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
dmx102 22.07.2006 21:24 / 22.07.2006 21:25
# $Id: XmlParser.p,v 1.0.0.0 2006/07/17 Seomin Kirill Exp $ @CLASS XmlParser @create[] $self.status(true) #Ввод @doXmlNew[docName;tag] ^try{ $self.status(true) $self.$docName[^xdoc::create[$tag]] }{ $exception.handled(true) $self.status(false) } @doXmlLoad[docName;fileName] ^try{ $self.status(true) $self.$docName[^xdoc::load[$fileName]] }{ $exception.handled(true) $self.status(false) } @getXmlRpc[docName] ^try{ $self.status(true) $self.$docName[^xdoc::create{^untaint[as-is]{$request:body}}] }{ $exception.handled(true) $self.status(false) } #Узлы @getNodeSelectFirst[docName;path][nodeList] ^try{ $self.status(true) $nodeList[^self.$docName.select[$path]] $result[$nodeList.0] }{ $exception.handled(true) $self.status(false) } @doNodeAdd[docName;path;tag;value][node;nodeNew;nodeNewValue;temp] ^try{ $self.status(true) $node[^getNodeSelectFirst[$docName;$path]] $nodeNew[^self.$docName.createElement[$tag]] $temp[^node.appendChild[$nodeNew]] $result(true) ^if(def $value){ $nodeNewValue[^self.$docName.createTextNode[$value]] $nodeNew[^getNodeSelectFirst[$docName;$path/$tag]] $temp[^nodeNew.appendChild[$nodeNewValue]] } }{ $exception.handled(true) $self.status(false) } @doNodeDel[docName;path][node;nodeParent;temp] ^try{ $self.status(true) $node[^getNodeSelectFirst[$docName;$path]] $nodeParent[$node.parentNode] $temp[^nodeParent.removeChild[$node]] }{ $exception.handled(true) $self.status(false) } @setNodeValue[docName;path;value][node] ^try{ $self.status(true) $node[^getNodeSelectFirst[$docName;$path]] $node.firstChild.nodeValue[$value] }{ $exception.handled(true) $self.status(false) } @doNodeCopy[docNameFrom;pathFrom;docNameTo;pathTo][nodeFrom;nodeNew;nodeTo;temp] ^try{ $self.status(true) $nodeFrom[^getNodeSelectFirst[$docNameFrom;$pathFrom]] $nodeNew[^self.$docNameTo.importNode[$nodeFrom](-1)] $nodeTo[^getNodeSelectFirst[$docNameTo;$pathTo]] $temp[^nodeTo.appendChild[$nodeNew]] }{ $exception.handled(true) $self.status(false) } @getNodeValue[docName;path][node] ^try{ $self.status(true) $node[^self.getNodeSelectFirst[$docName;$path]] $result[$node.firstChild.nodeValue] }{ $exception.handled(true) $self.status(false) } #Атрибуты @doAttrAdd[docName;path;attr;value][node;attrNew;attrNewValue;temp] ^try{ $self.status(true) $node[^getNodeSelectFirst[$docName;$path]] $attrNew[^self.$docName.createAttribute[$attr]] $temp[^node.appendChild[$attrNew]] ^if(def $value){ $attrNewValue[^self.$docName.createTextNode[$value]] $attrNew[^getNodeSelectFirst[$docName;$path/@$attr]] $temp[^attrNew.appendChild[$attrNewValue]] } }{ $exception.handled(true) $self.status(false) } @doAttrDel[docName;path;attr][node;temp] ^try{ $self.status(true) $node[^getNodeSelectFirst[$docName;$path]] $temp[^node.removeAttribute[$attr]] }{ $exception.handled(true) $self.status(false) } @setAttrValue[docName;path;attr;value][node;temp] ^try{ $self.status(true) $node[^getNodeSelectFirst[$docName;$path]] $temp[^node.setAttribute[$attr;$value]] }{ $exception.handled(true) $self.status(false) } @getAttrValue[docName;path;attr][node] ^try{ $self.status(true) $node[^self.getNodeSelectFirst[$docName;$path]] $result[^node.getAttribute[$attr]] }{ $exception.handled(true) $self.status(false) } #Вывод @doXmlSave[docName;fileName] ^try{ $self.status(true) ^self.$docName.save[$fileName] }{ $exception.handled(true) $self.status(false) } @getXmlXslt[docName;fileName][xslt] ^try{ $self.status(true) $xslt[^self.$docName.transform[$fileName]] $result[^xslt.string[$.method[html]]] }{ $exception.handled(true) $self.status(false) } @getXmlPrint[docName] ^try{ $self.status(true) $result[^self.$docName.string[]] }{ $exception.handled(true) $self.status(false) } @setXmlRpc[docName] ^try{ $self.status(true) $response:content-type[$.value[text/xml]$.charset[$response:charset]] $response:body[^self.$docName.string[]] }{ $exception.handled(true) $self.status(false) } ============================= Комментарии к классу ============================= @create[] #Без комментариев Создание XML документов @doXmlNew[docName;root] #Создание нового документа с сылкой-именем $docName, $root - корневой узел док-та @doXmlLoad[docName;fileName] #Загрузка XML док-та из источника $fileName в $docName @getXmlRpc[docName;flag] #Получение XML запроса в $docName Узлы созданных ранее док-тов @getNodeSelectFirst[docName;path] #Получение первого узла-элемента из $docName по указанному пути $path - XPath @doNodeAdd[docName;path;tag;value] #Добавление узла по адресу $path в $docName, где имя нового узла $tag, с необязательным текстовым содержимым $value @doNodeDel[docName;path] #Удаление узла из $docName по пути $path @setNodeValue[docName;path;value] #Изменяем значение текстового значения узла по адресу $path в док-те $docName, на новое значение $value ($path должен указывать на узел) @doNodeCopy[docNameFrom;pathFrom;docNameTo;pathTo] #Копирование узла $docNameFrom по адресу $pathFrom в док-т $docNameTo по адресу $pathTo @getNodeValue[docName;path] #Получаем текстовое содержание узла по адресу $path в док-те $docName Атрибуты узлов @doAttrAdd[docName;path;attr;value] #Добавляем аттрибут в док-т $docName по адресу $path с именем атрибута $attr и его не обязательным значением $value @doAttrDel[docName;path;attr] #Удаляем атрибут из документа $docName по адресу $path (указатель на материнский узел, где расположен атрибут $attr) @setAttrValue[docName;path;attr;value] #Устанавливаем значение атрибута из док-та $docName по адресу $path, где атрибут $attr и новое значение $value @getAttrValue[docName;path;attr] #Получаем значение атрибута из док-та $docName по адресу $path аттрибута $attr Вывод @doXmlSave[docName;fileName] #Сохраняем XML в чистом виде из док-та $docName в файл $fileName @getXmlXslt[docName;fileName] #Предобразуем док-т $docName к xsl таблице $fileName @getXmlPrint[docName] #Выводим на экран чистый XML из $docName @setXmlRpc[docName] #Делает ответ сервера в виде XML из $docName status - проверка успешности выполнения предъидущего оператора из класса(true;false)