Hi Bogdan,

 

works like a charm, thanks!

As an additional bonus now I know how to work with the perl module ;)

 

$rb(mime)[idx] is even more flexible.

 

 

 

From: Bogdan-Andrei Iancu [mailto:bog...@opensips.org] 
Sent: Dienstag, 17. Januar 2017 15:12
To: xaled <xa...@web.de>; 'OpenSIPS users mailling list' 
<users@lists.opensips.org>
Subject: Re: [OpenSIPS-Users] How to parse XML Body?

 

Hi,

There was a small typo in my regexp. The correct one is:

$var(reg) = "/(.*)gml:Coordinates>(.*)<\/gml:Coordinates(.*)/\2/s";
xlog("Position is $(rb[1]{re.subst,$var(reg)})\n");

I tried it and it does the job. 

Regarding the usability of the $rb variable, yes you have a point. I was 
thinking of something like $rb(mime)[idx] to access also per mime.

Best regards,




Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
http://www.opensips-solutions.com

On 01/13/2017 12:04 PM, xaled wrote:

Hi Bogdan,

 

thank you for looking at this issue. This regex does not work. I tried 
different combinations of the idea but it just not getting there. 

 

2017-01-13T11:02:42.287766+01:00 ivr01 /usr/local/sbin/opensips[24845]: 
DBG:core:tr_eval_re: we must compile the regexp

2017-01-13T11:02:42.288116+01:00 ivr01 /usr/local/sbin/opensips[24845]: 
WARNING:core:parse_repl: \/ unknown escape in (.*)<\/gml:Coordinates(.*)/\2/s

2017-01-13T11:02:42.288464+01:00 ivr01 /usr/local/sbin/opensips[24845]: 
ERROR:core:subst_parser: unknown flag . in 
(.*)/gml:Coordinates>(.*)<\/gml:Coordin

ates(.*)/\2/s

2017-01-13T11:02:42.288787+01:00 ivr01 /usr/local/sbin/opensips[24845]: 
ERROR:core:tr_eval_re: Can't compile regexp

 

I managed to get it running with perl:

 

use OpenSIPS qw ( log );

use OpenSIPS::Constants;

use OpenSIPS::Message;

 

 

sub parsePIDFLO {

        my $m = shift;

my $body = $m->getBody();

($coord) = $body =~ /Coordinates>(.*)</;

my ($long, $lat) = split( /\s+/, $coord );

 

Btw it would be great to be able to address the xml body by something like this:

rb[application/pidf+xml] or rb["application/pidf+xml"] otherwise if bodies come 
in different order rb[1] would not work.

 

Thanks

From: Bogdan-Andrei Iancu [mailto:bog...@opensips.org] 
Sent: Mittwoch, 11. Januar 2017 11:05
To: OpenSIPS users mailling list  <mailto:users@lists.opensips.org> 
<users@lists.opensips.org>; asd asd  <mailto:xa...@web.de> <xa...@web.de>
Subject: Re: [OpenSIPS-Users] How to parse XML Body?

 

Hi,

Please try

$var(reg) = "(.*)/gml:Coordinates>(.*)<\/gml:Coordinates(.*)/\2/s";
xlog("Position is $(rb[1]{re.subst,$var(reg)})\n");

Regards,




Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
http://www.opensips-solutions.com

On 01/06/2017 05:44 PM, xaled wrote:

Hi Bogdan,

 

can you give any hints on how to get the Coordinates values and not the whole 
xml body from the regex subst?

Sorry for being not clever enough to figure it out myself.

 

Thanks 

 

 

Hi Bogdan, 

 

$var(reg) = "/gml:Coordinates>(.*)<\/gml:Coordinates/\1/";

xlog("Position is $(rb[1]{re.subst,$var(reg)})\n");

 

DBG:core:subst_run:matched shows the needed XML element with value, but not the 
value alone. The xlog output shows the whole XML body without gml:Coordinates. 

 

2017-01-05T13:23:23.104982+01:00 ivr01 /usr/local/sbin/opensips[2227]: 
DBG:core:tr_eval_re: Trying to apply reg

exp [/gml:Coordinates>(.*)<\/gml:Coordinates/\1/] on : [<?xml version="1.0" 
encoding="UTF-8"?>#015#012<presence xml

ns="urn:ietf:params:xml:ns:pidf" 
xmlns:gp="urn:ietf:params:xml:ns:pidf:geopriv10" 
xmlns:gml="urn:opengis:specificat

ion:gml:schema-xsd:feature:v3.0" entity= <mailto:pres:sip:+1234...@test.com> 
"pres:sip:+1234...@test.com">#015#012 <tuple id="PDT">#015#012  <s

tatus>#015#012   <gp:geopriv>#015#012    <gp:location-info>#015#012     
<gml:location>#015#012      <gml:Point gml:

id="point1" srsName="epsg:4346">#015#012       <gml:Coordinates>12.32 
34.24</gml:Coordinates>#015#012      </gml:P

oint>#015#012     </gml:location>#015#012    </gp:location-info>#015#012    
<gp:usage-rules>#015#012     <gp:retran

smission-allowed>no</gp:retransmission-allowed>#015#012     
<gp:retention-expiry />#015#012    </gp:usage-rules>#01

5#012   </gp:geopriv>#015#012  </status>#015#012  
<timestamp>2016-8-02T04:13:23Z</timestamp>#015#012 </tuple>#015#0

12</presence>#015#012#015#012]

2017-01-05T13:23:23.107376+01:00 ivr01 /usr/local/sbin/opensips[2227]: 
DBG:core:tr_eval_re: we must compile the

regexp

2017-01-05T13:23:23.107903+01:00 ivr01 /usr/local/sbin/opensips[2227]: 
DBG:core:subst_parser: ok, se is 0x7f39a

5d0a1f0

2017-01-05T13:23:23.108241+01:00 ivr01 /usr/local/sbin/opensips[2227]: 
DBG:core:subst_run: running. r=0

2017-01-05T13:23:23.111918+01:00 ivr01 /usr/local/sbin/opensips[2227]: 
DBG:core:subst_run: matched (404, 45): [

gml:Coordinates>12.32 34.24</gml:Coordinates]

2017-01-05T13:23:23.112380+01:00 ivr01 /usr/local/sbin/opensips[2227]: 
DBG:core:buf_init: initializing...

2017-01-05T13:23:23.112730+01:00 ivr01 /usr/local/sbin/opensips[2227]: Position 
is <?xml version="1.0" encoding

="UTF-8"?>#015#012<presence xmlns="urn:ietf:params:xml:ns:pidf" 
xmlns:gp="urn:ietf:params:xml:ns:pidf:geopriv10" xm

lns:gml="urn:opengis:specification:gml:schema-xsd:feature:v3.0" entity= 
<mailto:pres:sip:+1234...@test.com> "pres:sip:+1234...@test.com">#015#0

12 <tuple id="PDT">#015#012  <status>#015#012   <gp:geopriv>#015#012    
<gp:location-info>#015#012     <gml:locatio

n>#015#012      <gml:Point gml:id="point1" srsName="epsg:4346">#015#012       
<12.32 34.24>#015#012      </gml:Poi

nt>#015#012     </gml:location>#015#012    </gp:location-info>#015#012    
<gp:usage-rules>#015#012     <gp:retransm

ission-allowed>no</gp:retransmission-allowed>#015#012     <gp:retention-expiry 
/>#015#012    </gp:usage-rules>#015#

012   </gp:geopriv>#015#012  </status>#015#012  
<timestamp>2016-8-02T04:13:23Z</timestamp>#015#012 </tuple>#015#012

</presence>

 

Thanks

 

From: Bogdan-Andrei Iancu [mailto:bog...@opensips.org] 
Sent: Donnerstag, 5. Januar 2017 13:12
To: OpenSIPS users mailling list <users@lists.opensips.org 
<mailto:users@lists.opensips.org> >; xaled <xa...@web.de <mailto:xa...@web.de> >
Subject: Re: [OpenSIPS-Users] How to parse XML Body?

 

Try  $var(reg) = "/gml:Coordinates>(.*)<\/gml:Coordinates/\1/";





 







_______________________________________________
Users mailing list
Users@lists.opensips.org <mailto:Users@lists.opensips.org> 
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

 

 

_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to