Разбор XML во флеш-файл - PullRequest
       21

Разбор XML во флеш-файл

1 голос
/ 16 ноября 2011

Во-первых, и еще раз (как и во всех моих постах), я почти ничего не знаю о флеш-памяти, и я пытаюсь достичь довольно сложных вещей, поэтому, пожалуйста, будьте добры в своем ответе.Кроме того, все это происходит локально на ПК, так что никаких проблем с сетью.

По сути, у меня есть сторонняя программа, которая генерирует нижеприведенный файл xml и перезаписывает файл xml каждый раз, когда появляется новое сообщение.получен этой сторонней программой.То, что я пытаюсь сделать, - это найти способ прочитать соответствующие flashvars (если это правильный термин) во флэш-файл (в основном я хочу прочитать в сообщениях 1 - 6), игнорировать остальную часть xml, отобразитьсообщения, а затем перезагружать XML каждые 30 секунд (в случае его изменения).Я предполагаю, что это похоже на своего рода программу чтения новостей, но я не имею никакого контроля над структурой XML-файла, поэтому, если кто-то может указать мне правильное направление, то я рад, чтопойти на обучение.Я попытался поиграть с загруженным файлом флэш-памяти для чтения новостей, но он не похож на xml - наверное, потому что у каждого сообщения в xml есть свой номер?любая помощь, как всегда, с благодарностью.

Спасибо,

Роб.

<?xml version="1.0" encoding="iso-8859-1"?>
<messagemonitor>

<messages>

<message1>
  <user></user>
  <gender></gender>
  <genderimagepath>C:/Program Files/monitor/monitorV3/Conf/Emoticons/blankgender.gif</genderimagepath>
  <msg>Send your Messages to 07654 321 123</msg>
</message1>

<message2>
  <user></user>
  <gender></gender>
  <genderimagepath>C:/Program Files/monitor/monitorV3/Conf/Emoticons/blankgender.gif</genderimagepath>
  <msg>Send your Messages to 07654 321 123</msg>
</message2>

<message3>
  <user></user>
  <gender></gender>
  <genderimagepath>C:/Program Files/monitor/monitorV3/Conf/Emoticons/blankgender.gif</genderimagepath>
  <msg>Send your Messages to 07654 321 123</msg>
</message3>

<message4>
  <user></user>
  <gender></gender>
  <genderimagepath>C:/Program Files/monitor/monitorV3/Conf/Emoticons/blankgender.gif</genderimagepath>
  <msg>Send your Messages to 07654 321 123</msg>
</message4>

<message5>
  <user></user>
  <gender></gender>
  <genderimagepath>C:/Program Files/monitor/monitorV3/Conf/Emoticons/blankgender.gif</genderimagepath>
  <msg>Send your Messages to 07654 321 123</msg>
</message5>

<message6>
  <user></user>
  <gender></gender>
  <genderimagepath>C:/Program Files/monitor/monitorV3/Conf/Emoticons/blankgender.gif</genderimagepath>
  <msg>Send your Messages to 07654 321 123</msg>
</message6>
</messages>

<votes>
<question></question>
<answera></answera>
<answerb></answerb>
<answerc></answerc>
<answerd></answerd>
<answere></answere>
<answerf></answerf>

<votepercenta></votepercenta>
<votepercentb></votepercentb>
<votepercentc></votepercentc>
<votepercentd></votepercentd>
<votepercente></votepercente>
<votepercentf></votepercentf>

<votepercentnuma></votepercentnuma>
<votepercentnumb></votepercentnumb>
<votepercentnumc></votepercentnumc>
<votepercentnumd></votepercentnumd>
<votepercentnume></votepercentnume>
<votepercentnumf></votepercentnumf>

<pica>C:/Program Files (x86)/monitor/Monitor V3/Conf/Emoticons/blankgender.gif</pica>
<picb>C:/Program Files (x86)/monitor/Monitor V3/Conf/Emoticons/blankgender.gif</picb>
<picc>C:/Program Files (x86)/monitor/Monitor V3/Conf/Emoticons/blankgender.gif</picc>
<picd>C:/Program Files (x86)/monitor/Monitor V3/Conf/Emoticons/blankgender.gif</picd>
</votes>

<photos>
<flashmovie></flashmovie>
<picturecaption></picturecaption>
<picturefile></picturefile>
<slideshowfile></slideshowfile>
<combiphotofile></combiphotofile>
</photos>

<systeminfo>
<number>07654 321 123</number>
<systemname>CHEESEY</systemname>
<sendmessage>Send your Messages to 07654 321 123</sendmessage>
<sendvotemsg>Send your Selection to 07654 321 123</sendvotemsg>    
<agreement>By using this system you agree to receive offers / promotions via SMS from the operator or selected 3rd parties</agreement>
</systeminfo>

</messagemonitor>

Ответы [ 2 ]

3 голосов
/ 16 ноября 2011

Следующее должно служить примером для выбора общего узла посредством сопоставления регулярного выражения.Предполагается, что загруженные данные являются XML, в противном случае произойдет ошибка синтаксического анализа.Обратите внимание, этот код является просто функциональным примером.

Следующий xml служит основой для этого примера:

<root>
    <tag1>1</tag1>
    <tag2>2</tag2>
    <tag3>3</tag3>

    <misc>?</misc>
</root>

Следующий код будет загружаться и анализироваться на основе нужных узлов:

var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, function(event:Event):void
{
    var xml:XML = new XML(loader.data);
    var messages:XMLList = xml.*.(/^tag/.test(name()));

    trace(messages.toXMLString());

    // <tag1>1</tag1>
    // <tag2>2</tag2>
    // <tag3>3</tag3>
});

loader.load(new URLRequest("path_to_xml"));

Надеюсь, это должно пролить некоторый свет на e4x, поскольку примеров использования регулярных выражений для сопоставления имен узлов не так много.

Удачи!

0 голосов
/ 16 ноября 2011

Предполагая, что ваша служба загружена в переменную XML с именем xml, вы должны выполнить итерации дочерних элементов xml.messages:

var xml:XML; // loaded XML per your cited example.

for each (var messageXml:XML in xml.messages.children())
{
    trace("User: " + messageXml..user.toString());
    trace("Gender: " + messageXml..gender.toString());
    // etc... 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...