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: [email protected] For additional commands, e-mail: [email protected]
