Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Erlang Mongooseim匹配子元素值_Erlang_Ejabberd_Mongoose Im - Fatal编程技术网

Erlang Mongooseim匹配子元素值

Erlang Mongooseim匹配子元素值,erlang,ejabberd,mongoose-im,Erlang,Ejabberd,Mongoose Im,在xmpp数据包的message元素中有一个子元素Request。因此,我的数据包如下所示: <message to="b" from="a" type="chat"> <request xmlns="urn:client:send-ack"></request> </message> 我想匹配request元素中xmlns属性的值。所以我想做一些类似的事情 case xml:get_attr_s(<<"xmlns"&

在xmpp数据包的message元素中有一个子元素Request。因此,我的数据包如下所示:

<message to="b" from="a" type="chat"> 
    <request xmlns="urn:client:send-ack"></request> 
</message>

我想匹配request元素中xmlns属性的值。所以我想做一些类似的事情

case xml:get_attr_s(<<"xmlns">>, xml_get_subtag(<<Request>>,Packet)) of
   "urn:client:send-receipts" ->
   %% Do something
   ok.
case xml:get_attr_s(,xml_get_subtag(,Packet))的
“urn:客户端:发送收据”->
%%做点什么
好啊

但是,显然这是最密集的工作。最好的方法是什么?

获取此属性的简单而快速的方法是
exml\u query:path/2
。有了它,您的
案例。。。其中的
将如下所示:

case exml_query:path(Stanza, [{element, <<"request">>}, {attr, <<"xmlns">>}]) of
    <<"urn:client:send-receipts">> -> something;
    _ -> something_else
end
xml:get_subtags_with_xmlns(Parsed_xml, <<"request">>, <<"urn:client:send-ack">>).
case-exml_查询:的路径(节,[{element,},{attr,}])
->某物;
_->还有别的吗
结束

获取此属性的简单快捷方法是
exml\u query:path/2
。有了它,您的
案例。。。其中的
将如下所示:

case exml_query:path(Stanza, [{element, <<"request">>}, {attr, <<"xmlns">>}]) of
    <<"urn:client:send-receipts">> -> something;
    _ -> something_else
end
xml:get_subtags_with_xmlns(Parsed_xml, <<"request">>, <<"urn:client:send-ack">>).
case-exml_查询:的路径(节,[{element,},{attr,}])
->某物;
_->还有别的吗
结束

获取此属性的简单快捷方法是
exml\u query:path/2
。有了它,您的
案例。。。其中的
将如下所示:

case exml_query:path(Stanza, [{element, <<"request">>}, {attr, <<"xmlns">>}]) of
    <<"urn:client:send-receipts">> -> something;
    _ -> something_else
end
xml:get_subtags_with_xmlns(Parsed_xml, <<"request">>, <<"urn:client:send-ack">>).
case-exml_查询:的路径(节,[{element,},{attr,}])
->某物;
_->还有别的吗
结束

获取此属性的简单快捷方法是
exml\u query:path/2
。有了它,您的
案例。。。其中的
将如下所示:

case exml_query:path(Stanza, [{element, <<"request">>}, {attr, <<"xmlns">>}]) of
    <<"urn:client:send-receipts">> -> something;
    _ -> something_else
end
xml:get_subtags_with_xmlns(Parsed_xml, <<"request">>, <<"urn:client:send-ack">>).
case-exml_查询:的路径(节,[{element,},{attr,}])
->某物;
_->还有别的吗
结束

使用最新的ejabberd开发版本,您可以通过以下操作执行您想要的操作:

case exml_query:path(Stanza, [{element, <<"request">>}, {attr, <<"xmlns">>}]) of
    <<"urn:client:send-receipts">> -> something;
    _ -> something_else
end
xml:get_subtags_with_xmlns(Parsed_xml, <<"request">>, <<"urn:client:send-ack">>).
xml:使用xmlns(已解析的xml,)获取子标签。
它将匹配任意数量的子标签并返回一个列表


您需要从源代码处构建ejabberd,或使用月底之前发布的即将发布的ejabberd 15.04版本。

对于最新的ejabberd开发版本,您可以通过以下操作执行您想要的操作:

case exml_query:path(Stanza, [{element, <<"request">>}, {attr, <<"xmlns">>}]) of
    <<"urn:client:send-receipts">> -> something;
    _ -> something_else
end
xml:get_subtags_with_xmlns(Parsed_xml, <<"request">>, <<"urn:client:send-ack">>).
xml:使用xmlns(已解析的xml,)获取子标签。
它将匹配任意数量的子标签并返回一个列表


您需要从源代码处构建ejabberd,或使用月底之前发布的即将发布的ejabberd 15.04版本。

对于最新的ejabberd开发版本,您可以通过以下操作执行您想要的操作:

case exml_query:path(Stanza, [{element, <<"request">>}, {attr, <<"xmlns">>}]) of
    <<"urn:client:send-receipts">> -> something;
    _ -> something_else
end
xml:get_subtags_with_xmlns(Parsed_xml, <<"request">>, <<"urn:client:send-ack">>).
xml:使用xmlns(已解析的xml,)获取子标签。
它将匹配任意数量的子标签并返回一个列表


您需要从源代码处构建ejabberd,或使用月底之前发布的即将发布的ejabberd 15.04版本。

对于最新的ejabberd开发版本,您可以通过以下操作执行您想要的操作:

case exml_query:path(Stanza, [{element, <<"request">>}, {attr, <<"xmlns">>}]) of
    <<"urn:client:send-receipts">> -> something;
    _ -> something_else
end
xml:get_subtags_with_xmlns(Parsed_xml, <<"request">>, <<"urn:client:send-ack">>).
xml:使用xmlns(已解析的xml,)获取子标签。
它将匹配任意数量的子标签并返回一个列表


您需要从源代码构建ejabberd,或者使用月底之前发布的即将发布的ejabberd 15.04版本。

如果您真的想使用
xml
模块,那么
xml:get\u tag\u attr(,xml:get\u subtag(El,)
是一个不错的选择,但是(可以说)
exml\u query:path/2
,Piotr建议,有一个更方便的界面。如果你真的想使用
xml
模块,那么
xml:get\u tag\u attr(,xml:get\u subtag(El,)
是一个好办法,但是(可以说)Piotr建议的
exml\u query:path/2
有一个更方便的界面。如果你真的想使用
xml
模块,那么
xml:get\u tag\u attr(,xml:get_subtag(El,)
是一种方法,但是(可以说)Piotr建议的
exml\u query:path/2
有一个更方便的界面。如果你真的想使用
xml
模块,那么
xml:get_tag\u attr(,xml:get_subtag(El,)
是一种方法,但是(可以说)
exml\u query:path/2
,由Piotr建议,有一个更方便的界面。嘿,谢谢它工作了。但是我有一个小问题。我的数据包中有两个请求标记。我要找的是第二个。但是每当我使用exml\u query:path查找匹配项时,它都会返回第一个匹配项。有没有办法循环遍历数据包或检查t下一个匹配还是什么?在这种情况下,使用具有相同参数的
exml\u query:path/2
,它将返回一个结果列表,在这种情况下,两个元素的
xmlns
值列表。然后,您可以使用
list:member/2
检查所需的xmlns是否存在。嘿,谢谢,它起作用了。但我有一个小问题。我有我的数据包中有两个请求标记。我要查找的是第二个。但是,每当我使用exml\u查询:path查找匹配项时,它都会返回第一个匹配项。是否有方法循环遍历数据包或检查下一个匹配项或其他内容?在这种情况下,使用具有相同参数的
exml\u查询:path/2
,它将返回一个结果列表,以本例显示两个元素的
xmlns
值列表。然后您可以使用
lists:member/2
检查所需的xmlns是否存在。嘿,谢谢,它起作用了。但我有一个小问题。我的数据包中有两个请求标记。我要查找的是第二个。但每当我使用exml\u query:path查找匹配项时,它都会返回e第一个匹配。是否有方法循环遍历数据包或检查下一个匹配或其他内容?在这种情况下,使用具有相同参数的
exml\u query:path/2
,它将返回一个结果列表,在这种情况下,两个元素的
xmlns
值列表。然后,您可以使用
list:member/2
检查所需的XMLNS在那里。嘿,谢谢。它起作用了。但我有一个小问题。我的数据包中有两个请求标记。我要找的是第二个。但是,每当我使用exml_查询:路径查找匹配项时,它都会返回第一个匹配项。有没有办法在数据包中循环或检查下一个匹配项或其他内容?在这种情况下,请使用
exml_查询:路径/2
使用相同的参数,它将返回一个结果列表,在本例中是两个元素的
xmlns
值列表。然后可以使用
lists:member/2
检查所需的xmlns是否