X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Арпенсанд в XML
pingvin_hb
pingvin_hb
Topic Starter сообщение 19.8.2011, 16:27; Ответить: pingvin_hb
Сообщение #1


Если в файле XML указать & (арпенсанд) вместо & , то парсер обнаруживает ошибку, а если параметр представляет и используется потом как url (с &) (искажения происходят и в тексте (там легко видны), то пропадает в парсере всё что написано до последнего & . Как получить полный url из XML. Пример url: (без знака _) _http://getkorean.com/women/upperclothing/blouse?page=shop.product_details&flypage=flypage.tpl&product_id=1176&category_id=6
Пример XML файла.
APACHI 2.2.4 , PHP 5.3.1
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 19.8.2011, 16:52; Ответить: alexdrob
Сообщение #2


[PHP]<?php

$xml_str = <<<XML
<?xml version="1.0"?>
<url>
<item><![CDATA[http://getkorean.com/women/upperclothing/blouse?page=shop.product_details&flypage=flypage.tpl&product_id=1176&category_id=6]]></item>
<item><![CDATA[http://getkorean.com/women/upperclothing/blouse?page=shop.product_details&flypage=flypage.tpl&product_id=1176&category_id=6]]></item>
</url>
XML;

$xml = simplexml_load_string($xml_str);
foreach ($xml->children() as $item) {
echo '<p><a href="' . $item . '">' . $item . '</a></p>';
}[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pingvin_hb
pingvin_hb
Topic Starter сообщение 19.8.2011, 23:56; Ответить: pingvin_hb
Сообщение #3


Да Ваша программа выдаёт две полные строки, в которых всё есть. А у меня даже в другом параметре XML обрезает так же. Я понял, что надо давать упрощенный пример обработчика. Может функция xml_parser до последнего амперсанда всё обрезает. Закомментировано , на всякий случай, обнуление всех переменных соответствующих строкам файла XML.
Упрощенный вариант XML файла для новой программы.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 20.8.2011, 0:02; Ответить: alexdrob
Сообщение #4


дело не в функции, а в том что такие символы и html и js нужно записывать в CDATA секции
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 20.8.2011, 0:03; Ответить: alexdrob
Сообщение #5


<?xml version="1.0" encoding="utf-8"?>
<offers>
<offer>
<model><![CDATA[Блузки, Рубашки]]></model>
<price><![CDATA[480]]></price>
<image><![CDATA[http://getkorean.com/components/com_virtuemart/shop_image/product/183760099.jpg]]></image>
<backlink><![CDATA[http://getkorean.com/women/upperclothing/blouse?page=shop.product_details&amp;flypage=flypage.tpl&amp;product_id=1176&amp;category_id=6]]></backlink>
<rubriki><![CDATA[Мода и стиль http://getkorean.com/women/upperclothing/b...p;category_id=6]]></rubriki>
<pod_rubriki><![CDATA[Одежда]]></pod_rubriki>
</offer>
</offers>

вот как то так
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pingvin_hb
pingvin_hb
Topic Starter сообщение 20.8.2011, 16:24; Ответить: pingvin_hb
Сообщение #6


Если только в нужной строке или во всех строках XML файла вставить ![CDATA[текст с ампесандами]] , выдача происходит не полной строки. а после последнего амперсанда и заканчивается ]] . При меры
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 20.8.2011, 16:33; Ответить: alexdrob
Сообщение #7


(pingvin_hb @ 20.8.2011, 19:24) *
вставить ![CDATA[т

вы тег не правильно написали, внимательней смотрите
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pingvin_hb
pingvin_hb
Topic Starter сообщение 20.8.2011, 22:26; Ответить: pingvin_hb
Сообщение #8


Восклицательный знак открывающая квадратная скобка CDATA открывающая квадратная скобка, а открывающую и закрывающую угловые скобки забыл.

Как оказалось, выводится всё только с остановками, я использовал дополнительное условие для обнуления переменной и .= . Что бы найти ошибку пришлось повторить парсер с нуля. Как оказалось парсер здесь не причём, просто php считает, если встречается закодированный символ, что с амперсанда начинается новая строка, которая заканчивается точкой с запятой.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 20.8.2011, 22:35; Ответить: alexdrob
Сообщение #9


дело не в том что считает php а в том что в xml нужно брать такие данные в CDATA вы просто без php создайте файл с амперсандами и откройте в браузере, у вас будет ошибка синтаксиса XML. а заключите в CDATA и браузер откроет, как и php.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Нужен сайт с автонаполнением по XML
1 REGNET 1132 7.3.2024, 15:08
автор: REGNET
Открытая тема (нет новых ответов) RTB/XML Партнерская сеть Trafficstore.pro
0 trafficstore2x2 1570 26.3.2021, 15:44
автор: trafficstore2x2
Открытая тема (нет новых ответов) RTB/XML Партнерская сеть Trafficstore.pro
0 trafficstore2x2 1012 23.3.2021, 18:53
автор: trafficstore2x2
Открытая тема (нет новых ответов) Zel.Biz - CPA/CPI партнерка и Push-сеть (XML JSON feed)
0 zelads1 869 27.12.2020, 17:05
автор: zelads1
Открытая тема (нет новых ответов) Zel.Biz - Push/CPA/CPI рекламная сеть (XML JSON feed)
0 Zelads 1672 14.10.2020, 13:22
автор: Zelads


 



RSS Текстовая версия Сейчас: 29.3.2024, 13:46
Дизайн