powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / парсим длинные XML-строки, и XSLT-парсер отваливается :(
2 сообщений из 2, страница 1 из 1
парсим длинные XML-строки, и XSLT-парсер отваливается :(
    #33088232
Фотография Sehensucht! (потерял пароль)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Суть в том, что от смежной системы получаю двоичные данные в виде xml-файла, при этом двоичные данные представленны в виде длиннющей строки, составленной из шестнадцатиричных чисел. Полученный xml-файл парсим на пхп при помощи Sablotron-а (в итоге наложения xsl-ной маски на xml-файл получаем пхп-код)
Объем xml-файла может составлять несколько сотен килобайт. Вот исходник xml-файла:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<ns1:getDocimageResponse xmlns:ns1="http://ws1/c.wsdl"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<return xmlns:ns2="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:Array"
xmlns:ns3="http://ws1/IWs_kontr.xsd" ns2:arrayType="ns3:ws1_cl_hexdatastring[1]">
<item xsi:type="ns3:ws1_cl_hexdatastring">

<hexdatastring xsi:type="xsd:string">
ffd8ffe000104a46(... мноооого-много килобайт ...) 494600010100000100010 
</hexdatastring>

</item>
</return>
</ns1:getDocimageResponse>

</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

а вот так выглядит xsl-шаблон:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="UTF-8"/>

<xsl:template match="return"><xsl:apply-templates select="//return/item"/></xsl:template>

<xsl:template match="//return/item">
<?php
    $img_data='<xsl:value-of select="hexdatastring"/>';
?>
</xsl:template>

</xsl:stylesheet>

и заодно пхп-код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
        $xh = xslt_create();
        xslt_set_encoding($xh,"Windows-1251");
        $result = xslt_process($xh, 'xml/img.xml', 'xsl/img.xsl', 'img.inc.php');
        if (!$result) {
            echo xslt_error($xh);
        }


так вот именно после функции xslt_process() все и отваливается. Причем из ошибок я получаю только сообщение: "No Response from Application Web Server
There was no response from the application web server for the page you requested.
Please notify the site's webmaster and try your request again later. "
Т.е. до строчки
Код: plaintext
if (!$result) {
транслятор пхп уже не доходит :(

Кто-нибудь знает как побороть подобный глюк?
...
Рейтинг: 0 / 0
парсим длинные XML-строки, и XSLT-парсер отваливается :(
    #33089500
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Запусти скрипт из под cli и с посмотри, чем он будет ругаться.
2. Для работы с soap у пхп есть свои модули и классы.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / парсим длинные XML-строки, и XSLT-парсер отваливается :(
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]