Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.07.2011, 15:02
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 1  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
По умолчанию Распознавание xml, приходящего в String

Есть функция со строковым параметром, в котором приходит то просто строка, то строка с xml-кодом. Нужно на входе распознавать и обрабатывать в зависимости от типа.

Понятное дело, попробовал

Код AS3:
try
{
  var strXML:XML = XML(inputStr);
}
catch(e:Error)
{
  trace("это невалидный xml или не xml вообще");
}
Ожидал, что преобразование строковых переменных вызовет исключение, которое я обработаю.
Однако strXML прекрасно получается, даже если на входе "123", т.е., исключения не возникает.

Как идентифицировать xml?

Старый 29.07.2011, 15:06
bav вне форума Посмотреть профиль Отправить личное сообщение для bav Найти все сообщения от bav
  № 2  
Ответить с цитированием
bav
 
Аватар для bav

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Код AS3:
if (stringParam.indexOf("<") == 0)
Вообще же зависит от того насколько "просто строка" может быть похожа на XML.

Старый 29.07.2011, 15:07
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 3  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Код AS3:
if ( inputStr is XML )
Так
__________________
Марк Tween

Старый 29.07.2011, 15:13
bav вне форума Посмотреть профиль Отправить личное сообщение для bav Найти все сообщения от bav
  № 4  
Ответить с цитированием
bav
 
Аватар для bav

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
in4core,
Код AS3:
var justString:String = "123";
var xmlString:String = '<?xml version="1.0" encoding="utf-8" ?><data><node>foo</node></data>';
trace(justString is XML);   // false
trace(xmlString is XML);    // false

Старый 29.07.2011, 15:15
Hidest вне форума Посмотреть профиль Отправить личное сообщение для Hidest Найти все сообщения от Hidest
  № 5  
Ответить с цитированием
Hidest
 
Аватар для Hidest

Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
Сравнить с типом XML можно только после парсинга строки. А автору надо до.

upd: Во, Bav в общем-то это и показал ))

Старый 29.07.2011, 15:16
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 6  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
"is XML" не отработало.
Код AS3:
var inputStr:String = "123";			
if (inputStr is XML) trace(inputStr, "is XML");
else trace(inputStr, "is not XML");
 
inputStr = "<node>123</node>";			
if (inputStr is XML) trace(inputStr, "is XML");
else trace(inputStr, "is not XML");
трейс:

Код:
123 is not XML
<node>123</node> is not XML
опоздал


чего делать?

Старый 29.07.2011, 15:17
DaFive вне форума Посмотреть профиль Отправить личное сообщение для DaFive Посетить домашнюю страницу DaFive Найти все сообщения от DaFive
  № 7  
Ответить с цитированием
DaFive
 
Аватар для DaFive

Регистрация: May 2008
Адрес: {0,0}
Сообщений: 754
Записей в блоге: 1
Отправить сообщение для DaFive с помощью ICQ
А почему оно должно ругаться, если вы её принудительно делаете иксэмелем.

Попробуйте выполнить код:
Код AS3:
var xml:XML = '123';
trace(xml);
и
Код AS3:
var xml:XML = XML('123');
trace(xml);
В первом - RTE, во втором - 123.
__________________
Кодинг, багинг, алгоритминг. me @

Старый 29.07.2011, 15:19
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 8  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Цитата:
Сравнить с типом XML можно только после парсинга строки. А автору надо до.
Странно, что парсинг строковой переменной без скобок не дает ошибки.

Добавлено через 2 минуты
Цитата:
Попробуйте выполнить код:
var xml:XML = '123';
trace(xml);
а такой код какую ошибку выдаст?

Код AS3:
var xmlStr:XML = "<node>123</node>";

Старый 29.07.2011, 15:22
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 9  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
А что мешает завести второй параметр в методе - isXML:Boolean?
__________________
тут я

Старый 29.07.2011, 15:25
DaFive вне форума Посмотреть профиль Отправить личное сообщение для DaFive Посетить домашнюю страницу DaFive Найти все сообщения от DaFive
  № 10  
Ответить с цитированием
DaFive
 
Аватар для DaFive

Регистрация: May 2008
Адрес: {0,0}
Сообщений: 754
Записей в блоге: 1
Отправить сообщение для DaFive с помощью ICQ
Цитата:
а такой код какую ошибку выдаст?

Код AS3:
var xmlStr:XML = "<node>123</node>";
1067: Implicit coercion of a value of type String to an unrelated type XML.
Другими словами - вы говорите, что xmlStr - это XML, а присваиваете ему String.
__________________
Кодинг, багинг, алгоритминг. me @

Создать новую тему Ответ Часовой пояс GMT +4, время: 12:42.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 12:42.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.