Hi Jonathan, Please find the inline comments.
> If it were me I’d try a workaround transforming the spaces to underscores > or something in the JSON before converting it to XML, and file some JIRAs > on the buggy conversion algorithm. Agreed. totally +1. Probably replacing with an unusable character(rather than underscore) will protect you from invalid translations. Regards ~Rasika On Tue, Mar 8, 2016 at 1:37 AM, Jonathan Marsh <[email protected]> wrote: > FWIW, XML also requires attributes to have the =”” part. Looks like we > are using a buggy JSON-XML conversion library if it’s generating malformed > XML. If our XPath is working on that at all it’s also buggy. There is no > convention in XML itself for escaping spaces in names, it will have to be a > convention of (a proper) conversion algorithm. > > > > If it were me I’d try a workaround transforming the spaces to underscores > or something in the JSON before converting it to XML, and file some JIRAs > on the buggy conversion algorithm. > > > > -Jonathan > > > > *From:* Dev [mailto:[email protected]] *On Behalf Of *Rasika Perera > *Sent:* Monday, March 07, 2016 11:34 AM > *To:* Udara Liyanage > *Cc:* WSO2 Developers' List > *Subject:* Re: [Dev] Xpath expression to fetch a property which has space > in name > > > > Hi Udara, > > > > According to the W3C XML 1.0 Specification > <https://www.w3.org/TR/REC-xml/#sec-common-syn> you *cannot* have spaces > on the XML element name. To be precise; > > > > [4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | > [#x0300-#x036F] | [#x203F-#x2040] > > [5] Name ::= NameStartChar (NameChar)* > > > > However; As I feel when there are XML element names with *spaces* the > second word is treated as an *attribute* to the XML element. > > > > eg. <Employee Id> would be treated as; <Employee Id=""> > > > > Therefore; Can you try; "<property name="test" expression=" > *//Employee[@Id]*'"/>" which should do the trick. > > > > Thanks, > > ~Rasika > > > > On Mon, Mar 7, 2016 at 2:55 PM, Udara Liyanage <[email protected]> wrote: > > Hi, > > > > It gives me following error. > > > > Below is my synapse configs. > > > > ##call external api > > <call> > > <endpoint> > > <http method="POST" uri-template=" > https://api.peoplehr.net/Query"/> > > </endpoint> > > </call> > > > > #iterate thru results > > <iterate id="iter1" expression="//Result"> > > <target> > > <sequence> > > <log level="custom"> > > <property name="test" expression="*json-eval($.Employee > Id)*"/> > > </log> > > > > Sample API call output > > > > { > > > > "Message": "The requested processed successfully.", > > "Result": [ > > { > > "Department": "HUMAN RESOURCES AND ADMINISTRATION", > > "Employee Id": "456", > > > > }, > > { > > "Department": "MARKETING", > > "Employee Id": "123", > > }, > > > > > > JsonUtil #toJsonStream. Could not create input stream from XML element > [<Result><Employee Id>123</Employee > Id><Department>ENGINEERING</Department></Result>]. Error>>> Could not > convert OMElement to JSON. Invalid XML payload. > > > > On Mon, Mar 7, 2016 at 2:42 PM, Keerthika Mahendralingam < > [email protected]> wrote: > > Hi Udara, > > Since you are getting JSON response, I think you can use json-eval to get > the value form response like, > > > > <property name="id" expression="json-eval($.Employee Id)"/> > > > > > > Thanks, > > > > On Mon, Mar 7, 2016 at 2:31 PM, Udara Liyanage <[email protected]> wrote: > > Hi, > > > > We have an call mediator which calls and external API. API response is > json. Json properties has spaces in names. > > { > > "Department": "ENGINEERING", > > "Employee Id": "LK", > > "First Name": "Udara", > > > > } > > > > ESB converts this to xml, those xml element names also have space in > element name. > > > > On Mon, Mar 7, 2016 at 2:05 PM, Udara Liyanage <[email protected]> wrote: > > Hi, > > > > Below is the log mediator output. Even the converted xml tag has space in > its name. > > > > [2016-03-07 14:00:36,587] INFO - LogMediator To: > http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , > MessageID: urn:uuid:2b6e4e6d-9180-4083-b06b-d12c08c5178e, Direction: > request, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/ > "><soapenv:Body><Result>*<Employee Id>*123*</Employee Id>*<First > Name>udara</First Name><Last Name>liyanage</Last > Name></Result></soapenv:Body></soapenv:Envelope> > > > > On Mon, Mar 7, 2016 at 12:06 PM, Udara Liyanage <[email protected]> wrote: > > Hi Thusitha, > > > > I already tried that, but negative. > > > > On Mon, Mar 7, 2016 at 11:59 AM, Thusitha Thilina Dayaratne < > [email protected]> wrote: > > Hi Udara, > > > > Did you tried replace the space with "_x0020_"? according to the [1] it > seems work for spaces > > [1] - > *http://users.jackrabbit.apache.narkive.com/r9aFPfiI/xpath-query-with-space-in-node-name > <http://users.jackrabbit.apache.narkive.com/r9aFPfiI/xpath-query-with-space-in-node-name>* > > > > Thanks > > On Mon, Mar 7, 2016 at 11:43 AM, Udara Liyanage <[email protected]> wrote: > > Hi, > > > > I am trying to fetch an property value from a json payload similar to > below. > > { > > "Department": "ABC", > > "Employee Id": "123", > > "Work Email": "[email protected]" > > }, > > > > I could extract Department value by below xpath expression. > > > > <property name="test" expression="//Department'"/> > > > > However when I found difficulties when the property name contains an space > in middle. I tried few options which were not successful. What is the > correct way to escape space character. > > > > <property name="test" expression="//'Employee${nbsp}Id'"/> > > > > <property name="test" expression="//'Employee Id'"/> > > > -- > > > Udara Liyanage > > Software Engineer > > WSO2, Inc.: http://wso2.com > > lean. enterprise. middleware > > web: http://udaraliyanage.wordpress.com > > phone: +94 71 443 6897 > > > > _______________________________________________ > Dev mailing list > [email protected] > http://wso2.org/cgi-bin/mailman/listinfo/dev > > > > > > -- > > Thusitha Dayaratne > > Software Engineer > > WSO2 Inc. - lean . enterprise . middleware | wso2.com > > > > Mobile +94712756809 > > Blog alokayasoya.blogspot.com > > About http://about.me/thusithathilina > > > > > > > > -- > > > Udara Liyanage > > Software Engineer > > WSO2, Inc.: http://wso2.com > > lean. enterprise. middleware > > web: http://udaraliyanage.wordpress.com > > phone: +94 71 443 6897 > > > > > > -- > > > Udara Liyanage > > Software Engineer > > WSO2, Inc.: http://wso2.com > > lean. enterprise. middleware > > web: http://udaraliyanage.wordpress.com > > phone: +94 71 443 6897 > > > > > > -- > > > Udara Liyanage > > Software Engineer > > WSO2, Inc.: http://wso2.com > > lean. enterprise. middleware > > web: http://udaraliyanage.wordpress.com > > phone: +94 71 443 6897 > > > _______________________________________________ > Dev mailing list > [email protected] > http://wso2.org/cgi-bin/mailman/listinfo/dev > > > > > > -- > > Keerthika Mahendralingam > Associate Software Engineer > > Mobile :+94 (0) 776 121144 > > [email protected] > > WSO2, Inc. > > lean . enterprise . middleware > > > > > > -- > > > Udara Liyanage > > Software Engineer > > WSO2, Inc.: http://wso2.com > > lean. enterprise. middleware > > web: http://udaraliyanage.wordpress.com > > phone: +94 71 443 6897 > > > _______________________________________________ > Dev mailing list > [email protected] > http://wso2.org/cgi-bin/mailman/listinfo/dev > > > > > > -- > > With Regards, > > > *Rasika Perera* > Software Engineer > > M: +94 71 680 9060 E: [email protected] > > LinkedIn: http://lk.linkedin.com/in/rasika90 > > WSO2 Inc. www.wso2.com > > lean.enterprise.middleware > -- With Regards, *Rasika Perera* Software Engineer M: +94 71 680 9060 E: [email protected] LinkedIn: http://lk.linkedin.com/in/rasika90 WSO2 Inc. www.wso2.com lean.enterprise.middleware
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
