Просмотр полной версии : """ вместо кавычек
humble david
01.08.2007, 00:34
Здравствуйте!
Проблема такого характера. Получаю с сервера хмл, одним из нодов, которого в свою очередь тоже является хмл. И вот, этот вложенный хмл, состоит из последовательностей """ вместо ковычек и т.д.
Что можно сделать?
humble david
01.08.2007, 00:50
[откоцано 4 КБ XML]
нод <level_data> по идее хмл еще один
О боже, что мешало прицепить в архиве, а?
CDATA в помощь.
в целях экономии места, я бы использовал какую-нибудь более краткую и удобную комбинацию, а вообще не понимаю о чем идет речь.
А в чем проблема с "? ведь во флеше оно верно отобразится, как надо.
humble david
01.08.2007, 11:52
Проблема в том, что сиомволы "'", "<", ">" вложенного хмля разбиваются на подобные последовательности и с передаваемым xml не представляется возможным работать.
CDATA я использую, для передачи информации на сервер. Но получаю я уже такие последовательности. Как мне из них хмл собрать опять?
humble david
01.08.2007, 12:46
Спрошу по-другому.
Что мне надо сделать, чтобы вот этот код возвращал XML, с которым можно работать?
var leveltxt = "<objects name="myName " ><object name="rino" type="single" /><object name="tree4" type="tree" x="320" y="197.4" N="40" id="tree4" isBorder="true"/></objects>";
levelData = new XML();
levelData.parseXML(leveltxt);
Нужно на самом сервере сделать так, чтобы он такой XML больше не выдавал.
humble david
01.08.2007, 12:51
понял. а флеш-клиент ниче все-таки не может сделать? кроме, скажем, диких функций, которые все эти дела найдут и заменят на нормальные символы...
Может, но это неправильно с точки зрения организации.
humble david
01.08.2007, 13:22
вообще, в базу, из которой этот хмл сервер берет и дает мне, я же его и кладу (то есть сам вложенный хмл). Кладу его используя <![CDATA[...]]>. Но может здесь какая-то ошибка есть?
Тега CDATA в приведенном XML нет.
humble david
01.08.2007, 13:40
а почему он там должен быть? сервер же считывает сами данные в этом теге и кладет в базу, потом эти данные возращает...
Сервер должен выдавать XML без всяких < и > и иже с ними и точка.
humble david
01.08.2007, 14:16
проблема не решена
Ну так решайте проблему на сервере, а не клиенте, говорят же.
http://www.php.net/manual/en/function.html-entity-decode.php
humble david
02.08.2007, 01:14
Вот решение проблемы:
при передачи данных на сервер, используется примерно такая схема:
str = "<level_data><![CDATA[" + escape(level_data.toString()) + "]]></level_data>";
при получении же:
socket.onXML = function(doc) {
var e = doc.firstChild;
var leveltxt = e.toString();
leveltxt = unescape(leveltxt);
levelData = new XML();
levelData.parseXML(leveltxt)
}
О боже… :wacko:
Что в лоб, что по лбу. Не должен флеш так делать! Он посылает нормальный XML, сервер его должен получить и нормально выдавать!
level_data — XML чистой воды. Зачем его escape-тить, запихивать черт знает куда (в CDATA) и отправлять в таком кастрированном виде? Что помешало отправить level_data как есть? Почему нельзя заставить нормально работать сервер? На данный момент приведенное решение является кривым до невозможности, мало того, что сервер криво обрабатывает XML, так ещё и флеш занимается какой-то дурацкой конвертацией и перемешиванием XML из-за кривости сервера…
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.