Regex ActionScript3正则表达式和xmpp节的帮助

Regex ActionScript3正则表达式和xmpp节的帮助,regex,actionscript-3,xmpp,Regex,Actionscript 3,Xmpp,我有一个字符串: <presence to="testsubject_1@server.org/d9ec56e4" from="room@conference.server.org/testsubject_2"> <x xmlns="http://jabber.org/protocol/muc#user"><item affiliation="none" role="visitor"/></x></presence> 我怎样才能知

我有一个字符串:

<presence to="testsubject_1@server.org/d9ec56e4"
from="room@conference.server.org/testsubject_2">
<x xmlns="http://jabber.org/protocol/muc#user"><item affiliation="none"
role="visitor"/></x></presence>

我怎样才能知道它是否包含presence属性以及它来自谁? 我尝试过使用as3的xml方法,但它们要求xml是一个完整的文档,所以我想使用regex,但时间太晚了,我在睡觉前发了一篇帖子:)


if(字符串包含
/搜索:
/ARGH!我强烈建议您不要使用正则表达式来解析XML,这就是为什么我们有XML解析器

var raw_data:String = '<presence to="testsubject_1@server.org/d9ec56e4" from="room@conference.server.org/testsubject_2"> <x xmlns="http://jabber.org/protocol/muc#user"><item affiliation="none" role="visitor"/></x></presence>';
trace("raw_data:", raw_data);
var presence:XML = new XML(raw_data);
trace("presence:", presence);
trace("root name == presence:", (presence.localName() == "presence")); // [trace] root name == presence: true
trace("from:", presence.@from); // [trace] from: room@conference.server.org/testsubject_2
var原始数据:字符串=“”;
跟踪(“原始数据:”,原始数据);
var presence:XML=新的XML(原始数据);
痕迹(“存在:”,存在);
跟踪(“根名称==presence:,(presence.localName()==presence”);//[trace]根名称==presence:true
trace(“from:,presence.@from);//[trace]from:room@conference.server.org/测试科目2

或者只使用众多XMPP库中的一个:


在这种情况下,此方法不起作用。xmpp交换节,而不是完整的xml文档(或结构类型)。如果这样做,您将得到TypeError:Error#1085:元素类型“stream”必须由匹配的结束标记终止。然后不要将stream:stream开始标记放入解析器,或者使用SAX或pull解析器。如果XML使用单引号,则不起作用。如果to/from的顺序不同,则不起作用。如果属性包含>(根据的AttValue产品,格式正确),则不起作用.XML比它看起来更难。我刚刚再次编辑了正则表达式以满足您的大部分请求。如果字符串还包含“stream”标记,那么您应该将其添加到代码段中。
var raw_data:String = '<presence to="testsubject_1@server.org/d9ec56e4" from="room@conference.server.org/testsubject_2"> <x xmlns="http://jabber.org/protocol/muc#user"><item affiliation="none" role="visitor"/></x></presence>';
trace("raw_data:", raw_data);
var presence:XML = new XML(raw_data);
trace("presence:", presence);
trace("root name == presence:", (presence.localName() == "presence")); // [trace] root name == presence: true
trace("from:", presence.@from); // [trace] from: room@conference.server.org/testsubject_2