You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@jmeter.apache.org by Agusti Tomas <ag...@gmail.com> on 2014/07/08 15:23:13 UTC

Re: Unable to extract using XPath Extractor

sebb <sebbaz <at> gmail.com> writes:

> 
> After some more investigations, I have found that XPath namespaces
> must be predeclared.
> 
> If the declaration is on the top-level element, then xalan does seem
> to pick up the definition (provided that namespaces are enabled, which
> is not currently the case in the XPath extractor).
> However namespaces that are declared on child elements are not
> available to XPath.
> 
> This is because there can be multiple declarations of the same
> namespace - and these can use different URIs.
> 
> It may be possible to enhance the XPath extractor to allow the user to
> provide a namespace declaration; this would simplify the writing of
> the XPath.
> 
> I.e. instead of
> 
> XPath:
> //*[local-name()='result' and
> namespace-uri()='http://biz.aol.com/schema/2006-12-18' ]
> 
> the idea is that you would be able to use:
> 
> Namespace declaration:
> ns    http://biz.aol.com/schema/2006-12-18
> 
> XPath:
> //ns:result
> 
> But this will have to wait for a future JMeter release.
> 
> On 03/09/07, sebb <sebbaz <at> gmail.com> wrote:
> > As a temporary work-round, you can use:
> >
> > //*[local-name()='result']
> >
> > but this would also match xx:result and yy:result
> >
> > Once namespaces are enabled, one can use:
> >
> > //*[local-name()='result' and
> > namespace-uri()='http://biz.aol.com/schema/2006-12-18' ]
> >
> > to restrict the search to the ns namespace.
> >
> > S
> > On 03/09/07, sebb <sebbaz <at> gmail.com> wrote:
> > > Check the jmeter log file - you'll probably see something like:
> > >
> > > WARN  - jmeter.extractor.XPathExtractor: error on
> > > XPathExtractor.xpathQuery(//ns:result)Prefix must resolve to a
> > > namespace: ns
> > >
> > > I tried
> > >
> > > //resultCode
> > >
> > > and that worked OK.
> > >
> > > I don't know enough about XPath to know why the namespace is not being
> > > resolved; it appears to be defined in the parent node.
> > >
> > > I checked the code, and the documentFactory was being called with
> > > namespace=false, but when I changed it to namespace=true it did not
> > > seem to make any difference.
> > >
> > > However, I then moved the xmlns:ns declaration to the soapenv:Envelope
> > > element, and it worked - provided that namespace=true (which is not
> > > the case currently).
> > >
> > > Perhaps the XPath implementation (xalan) is not able to resolve
> > > namespaces defined in nested elements?
> > >
> > > I need to look at this further.
> > >
> > > I'll raise a bug to be able to set namespace=true on the 
documentFactory.
> > >
> > > S.
> > > On 30/08/07, dasarih <dasarih <at> yahoo.com> wrote:
> > > >
> > > > Hi,
> > > >
> > > > I am unable to extract value of an element when it has a namespace 
prefix.
> > > > Can someone please give me a sample script on how to use "XPath 
Extractor"
> > > > and "XPath Assertion" for a WebService (SOAP) request/response.
> > > >
> > > > Here is the response from which I need to extract the value for 
"ns:result":
> > > > ***********************************
> > > > <?xml version="1.0" encoding="utf-8"?>
> > > > <soapenv:Envelope
> > > > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-
ENV:Header
> > > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> > > > xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> > > > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<ResponseHeader
> > > > xmlns="http://biz.aol.com/schema/header/2006-10">
<statusCode>200</statusCode><statusText>Ok</statusText>
<requestId>5498812049246984836--661430c8.114b6ef1996.-7a4e</requestId>
</ResponseHeader></SOAP-ENV:Header><SOAP-ENV:Body
> > > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> > > > xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> > > > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<ns:registerOfferResponse
> > > > xmlns:ns="http://biz.aol.com/schema/2006-12-18">
<ns:result>0</ns:result></ns:registerOfferResponse></SOAP-ENV:Body>
</soapenv:Envelope>
> > > > ***********
> > > >
> > > > I have tried different variations of XPATH Query and here are some I 
tried:
> > > >
> > > > *************
> > > > /soapenv:Envelope/SOAP-ENV:Body/ns:registerOfferResponse/ns:result
> > > >
> > > > *************
> > > > //ns:result
> > > >
> > > > *************
> > > > /*[local-name(.)="Envelope" and
> > > > namespace-uri(.)="http://schemas.xmlsoap.org/soap/envelope/"]/*
[local-name(.)="Body"
> > > > and
> > > > namespace-uri(.)="http://schemas.xmlsoap.org/soap/envelope/"][1]/*
[local-name(.)="registerOfferResponse"
> > > > and
> > > > namespace-uri(.)="http://biz.aol.com/schema/2006-12-18"][1]/*[local-
name(.)="result"
> > > > and namespace-uri(.)="http://biz.aol.com/schema/2006-12-18"]
[1]/text()
> > > > *************
> > > >
> > > > Your help is sincerely appreciated.
> > > >
> > > > Thank you.
> > > > --
> > > > View this message in context: http://www.nabble.com/Unable-to-
extract-using-XPath-Extractor-tf4354380.html#a12407599
> > > > Sent from the JMeter - User mailing list archive at Nabble.com.
> > > >
> > > >
> > > > --------------------------------------------------------------------
-
> > > > To unsubscribe, e-mail: jmeter-user-unsubscribe <at> 
jakarta.apache.org
> > > > For additional commands, e-mail: jmeter-user-help <at> 
jakarta.apache.org
> > > >
> > > >
> > >
> >
> 

Hi,

Has this been solved. In my case I am traying to extract the value of the 
node <ns2:enterpriseId>takataka</ns2:enterpriseId> from:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns3:createEnterpriseConfigurationDataResponse 
xmlns:ns2="http://example.com/datatype/configuration" 
xmlns:ns3="http://example.com/configuration">
         <return>
            <ns2:enterpriseId>takataka</ns2:enterpriseId>
         </return>
      </ns3:createEnterpriseConfigurationDataResponse>
   </soap:Body>
</soap:Envelope>

I tried several combinations of xpath queries without success, anybody who 
has an idea?

Regards,

Agusti





---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@jmeter.apache.org
For additional commands, e-mail: user-help@jmeter.apache.org


Re: Unable to extract using XPath Extractor

Posted by UBIK LOAD PACK Support <su...@ubikloadpack.com>.
Hello,
Have a look at:
http://jmeter.apache.org/usermanual/component_reference.html#XPath_Assertion


As a work-round for namespace limitations of the Xalan XPath parser
implementation on which JMeter is based, you can provide a Properties file
which contains mappings for the namespace prefixes:

   - prefix1=Full Namespace 1
   - prefix2=Full Namespace 2
   - ...

You reference this file in jmeter.properties (or user.properties <= BETTER)
file using the property:

   - xpath.namespace.config

If it doesn't work while it does for assertions, then open a BUGZILLA for
enhancement.

Regards
@ubikloadpack
http://ubikloadpack.com

On Tue, Jul 8, 2014 at 3:23 PM, Agusti Tomas <ag...@gmail.com> wrote:

> sebb <sebbaz <at> gmail.com> writes:
>
> >
> > After some more investigations, I have found that XPath namespaces
> > must be predeclared.
> >
> > If the declaration is on the top-level element, then xalan does seem
> > to pick up the definition (provided that namespaces are enabled, which
> > is not currently the case in the XPath extractor).
> > However namespaces that are declared on child elements are not
> > available to XPath.
> >
> > This is because there can be multiple declarations of the same
> > namespace - and these can use different URIs.
> >
> > It may be possible to enhance the XPath extractor to allow the user to
> > provide a namespace declaration; this would simplify the writing of
> > the XPath.
> >
> > I.e. instead of
> >
> > XPath:
> > //*[local-name()='result' and
> > namespace-uri()='http://biz.aol.com/schema/2006-12-18' ]
> >
> > the idea is that you would be able to use:
> >
> > Namespace declaration:
> > ns    http://biz.aol.com/schema/2006-12-18
> >
> > XPath:
> > //ns:result
> >
> > But this will have to wait for a future JMeter release.
> >
> > On 03/09/07, sebb <sebbaz <at> gmail.com> wrote:
> > > As a temporary work-round, you can use:
> > >
> > > //*[local-name()='result']
> > >
> > > but this would also match xx:result and yy:result
> > >
> > > Once namespaces are enabled, one can use:
> > >
> > > //*[local-name()='result' and
> > > namespace-uri()='http://biz.aol.com/schema/2006-12-18' ]
> > >
> > > to restrict the search to the ns namespace.
> > >
> > > S
> > > On 03/09/07, sebb <sebbaz <at> gmail.com> wrote:
> > > > Check the jmeter log file - you'll probably see something like:
> > > >
> > > > WARN  - jmeter.extractor.XPathExtractor: error on
> > > > XPathExtractor.xpathQuery(//ns:result)Prefix must resolve to a
> > > > namespace: ns
> > > >
> > > > I tried
> > > >
> > > > //resultCode
> > > >
> > > > and that worked OK.
> > > >
> > > > I don't know enough about XPath to know why the namespace is not
> being
> > > > resolved; it appears to be defined in the parent node.
> > > >
> > > > I checked the code, and the documentFactory was being called with
> > > > namespace=false, but when I changed it to namespace=true it did not
> > > > seem to make any difference.
> > > >
> > > > However, I then moved the xmlns:ns declaration to the
> soapenv:Envelope
> > > > element, and it worked - provided that namespace=true (which is not
> > > > the case currently).
> > > >
> > > > Perhaps the XPath implementation (xalan) is not able to resolve
> > > > namespaces defined in nested elements?
> > > >
> > > > I need to look at this further.
> > > >
> > > > I'll raise a bug to be able to set namespace=true on the
> documentFactory.
> > > >
> > > > S.
> > > > On 30/08/07, dasarih <dasarih <at> yahoo.com> wrote:
> > > > >
> > > > > Hi,
> > > > >
> > > > > I am unable to extract value of an element when it has a namespace
> prefix.
> > > > > Can someone please give me a sample script on how to use "XPath
> Extractor"
> > > > > and "XPath Assertion" for a WebService (SOAP) request/response.
> > > > >
> > > > > Here is the response from which I need to extract the value for
> "ns:result":
> > > > > ***********************************
> > > > > <?xml version="1.0" encoding="utf-8"?>
> > > > > <soapenv:Envelope
> > > > > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-
> ENV:Header
> > > > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> > > > > xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> > > > > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
> <ResponseHeader
> > > > > xmlns="http://biz.aol.com/schema/header/2006-10">
> <statusCode>200</statusCode><statusText>Ok</statusText>
> <requestId>5498812049246984836--661430c8.114b6ef1996.-7a4e</requestId>
> </ResponseHeader></SOAP-ENV:Header><SOAP-ENV:Body
> > > > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> > > > > xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> > > > > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
> <ns:registerOfferResponse
> > > > > xmlns:ns="http://biz.aol.com/schema/2006-12-18">
> <ns:result>0</ns:result></ns:registerOfferResponse></SOAP-ENV:Body>
> </soapenv:Envelope>
> > > > > ***********
> > > > >
> > > > > I have tried different variations of XPATH Query and here are some
> I
> tried:
> > > > >
> > > > > *************
> > > > > /soapenv:Envelope/SOAP-ENV:Body/ns:registerOfferResponse/ns:result
> > > > >
> > > > > *************
> > > > > //ns:result
> > > > >
> > > > > *************
> > > > > /*[local-name(.)="Envelope" and
> > > > > namespace-uri(.)="http://schemas.xmlsoap.org/soap/envelope/"]/*
> [local-name(.)="Body"
> > > > > and
> > > > > namespace-uri(.)="http://schemas.xmlsoap.org/soap/envelope/"][1]/*
> [local-name(.)="registerOfferResponse"
> > > > > and
> > > > > namespace-uri(.)="http://biz.aol.com/schema/2006-12-18
> "][1]/*[local-
> name(.)="result"
> > > > > and namespace-uri(.)="http://biz.aol.com/schema/2006-12-18"]
> [1]/text()
> > > > > *************
> > > > >
> > > > > Your help is sincerely appreciated.
> > > > >
> > > > > Thank you.
> > > > > --
> > > > > View this message in context: http://www.nabble.com/Unable-to-
> extract-using-XPath-Extractor-tf4354380.html#a12407599
> > > > > Sent from the JMeter - User mailing list archive at Nabble.com.
> > > > >
> > > > >
> > > > >
> --------------------------------------------------------------------
> -
> > > > > To unsubscribe, e-mail: jmeter-user-unsubscribe <at>
> jakarta.apache.org
> > > > > For additional commands, e-mail: jmeter-user-help <at>
> jakarta.apache.org
> > > > >
> > > > >
> > > >
> > >
> >
>
> Hi,
>
> Has this been solved. In my case I am traying to extract the value of the
> node <ns2:enterpriseId>takataka</ns2:enterpriseId> from:
>
> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
>    <soap:Body>
>       <ns3:createEnterpriseConfigurationDataResponse
> xmlns:ns2="http://example.com/datatype/configuration"
> xmlns:ns3="http://example.com/configuration">
>          <return>
>             <ns2:enterpriseId>takataka</ns2:enterpriseId>
>          </return>
>       </ns3:createEnterpriseConfigurationDataResponse>
>    </soap:Body>
> </soap:Envelope>
>
> I tried several combinations of xpath queries without success, anybody who
> has an idea?
>
> Regards,
>
> Agusti
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@jmeter.apache.org
> For additional commands, e-mail: user-help@jmeter.apache.org
>
>


-- 

Regards
Ubik Load Pack <http://ubikloadpack.com> Team
Follow us on Twitter <http://twitter.com/ubikloadpack>


Cordialement
L'équipe Ubik Load Pack <http://ubikloadpack.com>
Suivez-nous sur Twitter <http://twitter.com/ubikloadpack>