You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Mikael Andersson Wigander <mi...@gmail.com> on 2020/06/18 07:36:20 UTC

Unable to XPath, as bean or as split with complex XML

Hi

My problem is that I can’t extract some XML using xpath in Camel 3.3.0

My incoming XML is complicated where my target tag <Tx></Tx> also has a tag further down the tree as <Tx></Tx>.

I have created a demo project on Github for share if someone could help me. https://github.com/hakuseki/xpath

I have tested with a more “friendly” XML and both tests manage to retrieve the XML segment I want.

This type of XML we get from client is based on a EU/ESMA standard.

Pls advice

Thx

/M


Re: Unable to XPath, as bean or as split with complex XML

Posted by Mikael Andersson Wigander <mi...@gmail.com>.
Found the local namespace trick working but not as I expected. It found the inner Tx instead. 
Back to square on. 

Thx for all input so far

// Mikael Andersson Wigander


> 18 juni 2020 kl. 10:39 skrev Claus Ibsen <cl...@gmail.com>:
> 
> On Thu, Jun 18, 2020 at 10:15 AM Mikael Andersson Wigander
> <mi...@gmail.com> wrote:
>> 
>> OK, interesting.
>> 
>> I tested the Xpath using a online tester and there it works without using any namespace.
>> 
>> Is it possible using XPath without namespaces or are there any xpath arguments that can be used?
>> 
> 
> No really not, java xpath requires the namespace, but there is some
> "trick" with local-ns() or some weird syntax I kinda think may be
> possible.
> 
>> M
>> 
>>>> On 18 Jun 2020, at 09:53, Alex Dettinger <al...@gmail.com> wrote:
>>> 
>>> Hi Mikael,
>>> 
>>> I've noticed that the incoming xml file is involving 2 xml namespaces
>>> while the query looks not.
>>> Precising namespaces in the xpath query may help to move further, something
>>> like:
>>> https://github.com/apache/camel/blob/master/core/camel-core/src/test/java/org/apache/camel/builder/xml/XPathTest.java#L241
>>> 
>>> hth,
>>> Alex
>>> 
>>> On Thu, Jun 18, 2020 at 9:36 AM Mikael Andersson Wigander <
>>> mikael.grevsten@gmail.com> wrote:
>>> 
>>>> Hi
>>>> 
>>>> My problem is that I can’t extract some XML using xpath in Camel 3.3.0
>>>> 
>>>> My incoming XML is complicated where my target tag <Tx></Tx> also has a
>>>> tag further down the tree as <Tx></Tx>.
>>>> 
>>>> I have created a demo project on Github for share if someone could help
>>>> me. https://github.com/hakuseki/xpath
>>>> 
>>>> I have tested with a more “friendly” XML and both tests manage to retrieve
>>>> the XML segment I want.
>>>> 
>>>> This type of XML we get from client is based on a EU/ESMA standard.
>>>> 
>>>> Pls advice
>>>> 
>>>> Thx
>>>> 
>>>> /M
>>>> 
>>>> 
>> 
> 
> 
> -- 
> Claus Ibsen
> -----------------
> http://davsclaus.com @davsclaus
> Camel in Action 2: https://www.manning.com/ibsen2

Re: Unable to XPath, as bean or as split with complex XML

Posted by bob anderson <bo...@gmail.com>.
Its with the other spring xmlns declarations

<beans xmlns="http://www.springframework.org/schema/beans"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

*xmlns:x="urn:iso:std:iso:20022:tech:xsd:DRAFT15auth.016.001.01"*
            xmlns:camel="http://camel.apache.org/schema/spring"
           xsi:schemaLocation="

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd
                                   http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd">



On Thu, Jun 18, 2020 at 3:21 PM Mikael Andersson Wigander <
mikael.grevsten@gmail.com> wrote:

> Nice.
>
> Did you change the XML and added the namespace prefix or did you handle it
> in code?
>
> M
>
> > On 18 Jun 2020, at 15:15, bob anderson <bo...@gmail.com>
> wrote:
> >
> > Hi ,
> >
> > I know you are using JAVA DSL, but I have got what you want using the XML
> > DSL, maybe someone can put you right from my example.
> >
> > The two points that are probably important are
> > 1) Giving the namespace a prefix -----
> > xmlns:x="urn:iso:std:iso:20022:tech:xsd:DRAFT15auth.016.001.01"
> > 2) In the second split using the prefix for both New and the Tx tags
> >
> > I just ran from the consol with your xml file
> >
> >
> > <?xml version="1.0" encoding="UTF-8" standalone="no"?>
> >
> > <beans xmlns="http://www.springframework.org/schema/beans <
> http://www.springframework.org/schema/beans>"
> >       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance <
> http://www.w3.org/2001/XMLSchema-instance>"
> >  xmlns:x="urn:iso:std:iso:20022:tech:xsd:DRAFT15auth.016.001.01"
> >       xmlns:camel="http://camel.apache.org/schema/spring <
> http://camel.apache.org/schema/spring>"
> >       xsi:schemaLocation="
> >         http://www.springframework.org/schema/beans <
> http://www.springframework.org/schema/beans>
> > http://www.springframework.org/schema/beans/spring-beans.xsd <
> http://www.springframework.org/schema/beans/spring-beans.xsd>
> >         http://camel.apache.org/schema/spring <
> http://camel.apache.org/schema/spring>
> > http://camel.apache.org/schema/spring/camel-spring.xsd <
> http://camel.apache.org/schema/spring/camel-spring.xsd>
> >         http://www.springframework.org/schema/context <
> http://www.springframework.org/schema/context>
> >        http://www.springframework.org/schema/context/spring-context.xsd
> <http://www.springframework.org/schema/context/spring-context.xsd>">
> >
> > <camelContext xmlns="http://camel.apache.org/schema/spring <
> http://camel.apache.org/schema/spring>" trace="false">
> >
> >    <route id="Test XML splitter" streamCache="true">
> > <from
> >
> uri="file://src/data/?fileName=splitterxmltest.xml&amp;noop=true&amp;delay=500
> <file://src/data/?fileName=splitterxmltest.xml&amp;noop=true&amp;delay=500>"/>
> >
> > <split streaming="true">
> > <xtokenize>//x:Tx</xtokenize>
> > <log message="Body in First tokenize split = ${body}"/>
> > <!-- get some elementvalue and output to log-->
> > <setHeader headerName="TxId">
> > <xpath>//x:TxId/text()</xpath>
> > </setHeader>
> > <log message="TxId = ${header.TxId} ***************"/>
> > <!-- Do the second split  -->
> > <to uri="direct:secondSplit"/>
> >
> >            </split>
> >    </route>
> >
> >
> > <!--
> >
> ************************************************************************************************
> > -->
> > <!-- Second Split Route
> >                         * -->
> > <!--
> >
> ************************************************************************************************
> > -->
> > <route id="second level split">
> > <from uri="direct:secondSplit"/>
> >
> > <split streaming="true">
> > <xtokenize>//x:New/x:Tx</xtokenize>
> >               <!-- output body to the log -->
> > <log message="Body in second tokenize split = ${body}"/>
> > </split>
> >
> >
> >      </route>
> >
> >
> > </camelContext>
> > </beans>
> >
> > On Thu, Jun 18, 2020 at 2:51 PM Mikael Andersson Wigander <
> > mikael.grevsten@gmail.com <ma...@gmail.com>> wrote:
> >
> >> My latest tests reveal that when using local-name() I get everything
> with
> >> the tag <Tx> (of course).
> >>
> >> But I cannot see how to manipulate the xpath expression.
> >>
> >> final XPathBuilder xPathBuilder =
> >> XPathBuilder.xpath("//*[local-name()='Tx']");
> >>
> >> When trying out it in http://xpather.com/ using
> >>
> >> //FinInstrmRptgTxRpt/*[local-name()='Tx']
> >>
> >> I get what I want but not in my code,. it returns nothing
> >>
> >> final XPathBuilder xPathBuilder =
> >> XPathBuilder.xpath("//FinInstrmRptgTxRpt/*[local-name()='Tx']");
> >>
> >>
> >>
> >>> On 18 Jun 2020, at 10:39, Claus Ibsen <cl...@gmail.com> wrote:
> >>>
> >>> On Thu, Jun 18, 2020 at 10:15 AM Mikael Andersson Wigander
> >>> <mikael.grevsten@gmail.com <ma...@gmail.com> <mailto:
> mikael.grevsten@gmail.com <ma...@gmail.com>>> wrote:
> >>>>
> >>>> OK, interesting.
> >>>>
> >>>> I tested the Xpath using a online tester and there it works without
> >> using any namespace.
> >>>>
> >>>> Is it possible using XPath without namespaces or are there any xpath
> >> arguments that can be used?
> >>>>
> >>>
> >>> No really not, java xpath requires the namespace, but there is some
> >>> "trick" with local-ns() or some weird syntax I kinda think may be
> >>> possible.
> >>>
> >>>> M
> >>>>
> >>>>> On 18 Jun 2020, at 09:53, Alex Dettinger <aldettinger@gmail.com
> <ma...@gmail.com>>
> >> wrote:
> >>>>>
> >>>>> Hi Mikael,
> >>>>>
> >>>>> I've noticed that the incoming xml file is involving 2 xml namespaces
> >>>>> while the query looks not.
> >>>>> Precising namespaces in the xpath query may help to move further,
> >> something
> >>>>> like:
> >>>>>
> >>
> https://github.com/apache/camel/blob/master/core/camel-core/src/test/java/org/apache/camel/builder/xml/XPathTest.java#L241
> <
> https://github.com/apache/camel/blob/master/core/camel-core/src/test/java/org/apache/camel/builder/xml/XPathTest.java#L241
> >
> >>>>>
> >>>>> hth,
> >>>>> Alex
> >>>>>
> >>>>> On Thu, Jun 18, 2020 at 9:36 AM Mikael Andersson Wigander <
> >>>>> mikael.grevsten@gmail.com <ma...@gmail.com>> wrote:
> >>>>>
> >>>>>> Hi
> >>>>>>
> >>>>>> My problem is that I can’t extract some XML using xpath in Camel
> 3.3.0
> >>>>>>
> >>>>>> My incoming XML is complicated where my target tag <Tx></Tx> also
> has
> >> a
> >>>>>> tag further down the tree as <Tx></Tx>.
> >>>>>>
> >>>>>> I have created a demo project on Github for share if someone could
> >> help
> >>>>>> me. https://github.com/hakuseki/xpath <
> https://github.com/hakuseki/xpath>
> >>>>>>
> >>>>>> I have tested with a more “friendly” XML and both tests manage to
> >> retrieve
> >>>>>> the XML segment I want.
> >>>>>>
> >>>>>> This type of XML we get from client is based on a EU/ESMA standard.
> >>>>>>
> >>>>>> Pls advice
> >>>>>>
> >>>>>> Thx
> >>>>>>
> >>>>>> /M
> >>>>>>
> >>>>>>
> >>>>
> >>>
> >>>
> >>> --
> >>> Claus Ibsen
> >>> -----------------
> >>> http://davsclaus.com <http://davsclaus.com/> <http://davsclaus.com/ <
> http://davsclaus.com/>> @davsclaus
> >>> Camel in Action 2: https://www.manning.com/ibsen2 <
> https://www.manning.com/ibsen2> <
> >> https://www.manning.com/ibsen2 <https://www.manning.com/ibsen2>>
> >>
> >
> >
> > --
> > Bob Anderson
> > +27 (0) 82 389 0335
> > [image: View my profile on LinkedIn]
> > <http://ng.linkedin.com/pub/bob-anderson/2/25/9b5 <
> http://ng.linkedin.com/pub/bob-anderson/2/25/9b5>>
>
>

-- 
Bob Anderson
+27 (0) 82 389 0335
[image: View my profile on LinkedIn]
<http://ng.linkedin.com/pub/bob-anderson/2/25/9b5>

Re: Unable to XPath, as bean or as split with complex XML

Posted by Mikael Andersson Wigander <mi...@gmail.com>.
Nice.

Did you change the XML and added the namespace prefix or did you handle it in code?

M

> On 18 Jun 2020, at 15:15, bob anderson <bo...@gmail.com> wrote:
> 
> Hi ,
> 
> I know you are using JAVA DSL, but I have got what you want using the XML
> DSL, maybe someone can put you right from my example.
> 
> The two points that are probably important are
> 1) Giving the namespace a prefix -----
> xmlns:x="urn:iso:std:iso:20022:tech:xsd:DRAFT15auth.016.001.01"
> 2) In the second split using the prefix for both New and the Tx tags
> 
> I just ran from the consol with your xml file
> 
> 
> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
> 
> <beans xmlns="http://www.springframework.org/schema/beans <http://www.springframework.org/schema/beans>"
>       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance <http://www.w3.org/2001/XMLSchema-instance>"
>  xmlns:x="urn:iso:std:iso:20022:tech:xsd:DRAFT15auth.016.001.01"
>       xmlns:camel="http://camel.apache.org/schema/spring <http://camel.apache.org/schema/spring>"
>       xsi:schemaLocation="
>         http://www.springframework.org/schema/beans <http://www.springframework.org/schema/beans>
> http://www.springframework.org/schema/beans/spring-beans.xsd <http://www.springframework.org/schema/beans/spring-beans.xsd>
>         http://camel.apache.org/schema/spring <http://camel.apache.org/schema/spring>
> http://camel.apache.org/schema/spring/camel-spring.xsd <http://camel.apache.org/schema/spring/camel-spring.xsd>
>         http://www.springframework.org/schema/context <http://www.springframework.org/schema/context>
>        http://www.springframework.org/schema/context/spring-context.xsd <http://www.springframework.org/schema/context/spring-context.xsd>">
> 
> <camelContext xmlns="http://camel.apache.org/schema/spring <http://camel.apache.org/schema/spring>" trace="false">
> 
>    <route id="Test XML splitter" streamCache="true">
> <from
> uri="file://src/data/?fileName=splitterxmltest.xml&amp;noop=true&amp;delay=500 <file://src/data/?fileName=splitterxmltest.xml&amp;noop=true&amp;delay=500>"/>
> 
> <split streaming="true">
> <xtokenize>//x:Tx</xtokenize>
> <log message="Body in First tokenize split = ${body}"/>
> <!-- get some elementvalue and output to log-->
> <setHeader headerName="TxId">
> <xpath>//x:TxId/text()</xpath>
> </setHeader>
> <log message="TxId = ${header.TxId} ***************"/>
> <!-- Do the second split  -->
> <to uri="direct:secondSplit"/>
> 
>            </split>
>    </route>
> 
> 
> <!--
> ************************************************************************************************
> -->
> <!-- Second Split Route
>                         * -->
> <!--
> ************************************************************************************************
> -->
> <route id="second level split">
> <from uri="direct:secondSplit"/>
> 
> <split streaming="true">
> <xtokenize>//x:New/x:Tx</xtokenize>
>               <!-- output body to the log -->
> <log message="Body in second tokenize split = ${body}"/>
> </split>
> 
> 
>      </route>
> 
> 
> </camelContext>
> </beans>
> 
> On Thu, Jun 18, 2020 at 2:51 PM Mikael Andersson Wigander <
> mikael.grevsten@gmail.com <ma...@gmail.com>> wrote:
> 
>> My latest tests reveal that when using local-name() I get everything with
>> the tag <Tx> (of course).
>> 
>> But I cannot see how to manipulate the xpath expression.
>> 
>> final XPathBuilder xPathBuilder =
>> XPathBuilder.xpath("//*[local-name()='Tx']");
>> 
>> When trying out it in http://xpather.com/ using
>> 
>> //FinInstrmRptgTxRpt/*[local-name()='Tx']
>> 
>> I get what I want but not in my code,. it returns nothing
>> 
>> final XPathBuilder xPathBuilder =
>> XPathBuilder.xpath("//FinInstrmRptgTxRpt/*[local-name()='Tx']");
>> 
>> 
>> 
>>> On 18 Jun 2020, at 10:39, Claus Ibsen <cl...@gmail.com> wrote:
>>> 
>>> On Thu, Jun 18, 2020 at 10:15 AM Mikael Andersson Wigander
>>> <mikael.grevsten@gmail.com <ma...@gmail.com> <mailto:mikael.grevsten@gmail.com <ma...@gmail.com>>> wrote:
>>>> 
>>>> OK, interesting.
>>>> 
>>>> I tested the Xpath using a online tester and there it works without
>> using any namespace.
>>>> 
>>>> Is it possible using XPath without namespaces or are there any xpath
>> arguments that can be used?
>>>> 
>>> 
>>> No really not, java xpath requires the namespace, but there is some
>>> "trick" with local-ns() or some weird syntax I kinda think may be
>>> possible.
>>> 
>>>> M
>>>> 
>>>>> On 18 Jun 2020, at 09:53, Alex Dettinger <aldettinger@gmail.com <ma...@gmail.com>>
>> wrote:
>>>>> 
>>>>> Hi Mikael,
>>>>> 
>>>>> I've noticed that the incoming xml file is involving 2 xml namespaces
>>>>> while the query looks not.
>>>>> Precising namespaces in the xpath query may help to move further,
>> something
>>>>> like:
>>>>> 
>> https://github.com/apache/camel/blob/master/core/camel-core/src/test/java/org/apache/camel/builder/xml/XPathTest.java#L241 <https://github.com/apache/camel/blob/master/core/camel-core/src/test/java/org/apache/camel/builder/xml/XPathTest.java#L241>
>>>>> 
>>>>> hth,
>>>>> Alex
>>>>> 
>>>>> On Thu, Jun 18, 2020 at 9:36 AM Mikael Andersson Wigander <
>>>>> mikael.grevsten@gmail.com <ma...@gmail.com>> wrote:
>>>>> 
>>>>>> Hi
>>>>>> 
>>>>>> My problem is that I can’t extract some XML using xpath in Camel 3.3.0
>>>>>> 
>>>>>> My incoming XML is complicated where my target tag <Tx></Tx> also has
>> a
>>>>>> tag further down the tree as <Tx></Tx>.
>>>>>> 
>>>>>> I have created a demo project on Github for share if someone could
>> help
>>>>>> me. https://github.com/hakuseki/xpath <https://github.com/hakuseki/xpath>
>>>>>> 
>>>>>> I have tested with a more “friendly” XML and both tests manage to
>> retrieve
>>>>>> the XML segment I want.
>>>>>> 
>>>>>> This type of XML we get from client is based on a EU/ESMA standard.
>>>>>> 
>>>>>> Pls advice
>>>>>> 
>>>>>> Thx
>>>>>> 
>>>>>> /M
>>>>>> 
>>>>>> 
>>>> 
>>> 
>>> 
>>> --
>>> Claus Ibsen
>>> -----------------
>>> http://davsclaus.com <http://davsclaus.com/> <http://davsclaus.com/ <http://davsclaus.com/>> @davsclaus
>>> Camel in Action 2: https://www.manning.com/ibsen2 <https://www.manning.com/ibsen2> <
>> https://www.manning.com/ibsen2 <https://www.manning.com/ibsen2>>
>> 
> 
> 
> -- 
> Bob Anderson
> +27 (0) 82 389 0335
> [image: View my profile on LinkedIn]
> <http://ng.linkedin.com/pub/bob-anderson/2/25/9b5 <http://ng.linkedin.com/pub/bob-anderson/2/25/9b5>>


Re: Unable to XPath, as bean or as split with complex XML

Posted by bob anderson <bo...@gmail.com>.
Hi ,

I know you are using JAVA DSL, but I have got what you want using the XML
DSL, maybe someone can put you right from my example.

The two points that are probably important are
1) Giving the namespace a prefix -----
xmlns:x="urn:iso:std:iso:20022:tech:xsd:DRAFT15auth.016.001.01"
2) In the second split using the prefix for both New and the Tx tags

I just ran from the consol with your xml file


<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:x="urn:iso:std:iso:20022:tech:xsd:DRAFT15auth.016.001.01"
       xmlns:camel="http://camel.apache.org/schema/spring"
       xsi:schemaLocation="
         http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
         http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd
         http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

 <camelContext xmlns="http://camel.apache.org/schema/spring" trace="false">

    <route id="Test XML splitter" streamCache="true">
<from
uri="file://src/data/?fileName=splitterxmltest.xml&amp;noop=true&amp;delay=500"/>

<split streaming="true">
<xtokenize>//x:Tx</xtokenize>
<log message="Body in First tokenize split = ${body}"/>
<!-- get some elementvalue and output to log-->
<setHeader headerName="TxId">
<xpath>//x:TxId/text()</xpath>
</setHeader>
<log message="TxId = ${header.TxId} ***************"/>
<!-- Do the second split  -->
<to uri="direct:secondSplit"/>

            </split>
    </route>


<!--
************************************************************************************************
-->
<!-- Second Split Route
                         * -->
<!--
************************************************************************************************
-->
<route id="second level split">
<from uri="direct:secondSplit"/>

<split streaming="true">
<xtokenize>//x:New/x:Tx</xtokenize>
               <!-- output body to the log -->
<log message="Body in second tokenize split = ${body}"/>
</split>


      </route>


</camelContext>
</beans>

On Thu, Jun 18, 2020 at 2:51 PM Mikael Andersson Wigander <
mikael.grevsten@gmail.com> wrote:

> My latest tests reveal that when using local-name() I get everything with
> the tag <Tx> (of course).
>
> But I cannot see how to manipulate the xpath expression.
>
> final XPathBuilder xPathBuilder =
> XPathBuilder.xpath("//*[local-name()='Tx']");
>
> When trying out it in http://xpather.com/ using
>
> //FinInstrmRptgTxRpt/*[local-name()='Tx']
>
> I get what I want but not in my code,. it returns nothing
>
> final XPathBuilder xPathBuilder =
> XPathBuilder.xpath("//FinInstrmRptgTxRpt/*[local-name()='Tx']");
>
>
>
> > On 18 Jun 2020, at 10:39, Claus Ibsen <cl...@gmail.com> wrote:
> >
> > On Thu, Jun 18, 2020 at 10:15 AM Mikael Andersson Wigander
> > <mikael.grevsten@gmail.com <ma...@gmail.com>> wrote:
> >>
> >> OK, interesting.
> >>
> >> I tested the Xpath using a online tester and there it works without
> using any namespace.
> >>
> >> Is it possible using XPath without namespaces or are there any xpath
> arguments that can be used?
> >>
> >
> > No really not, java xpath requires the namespace, but there is some
> > "trick" with local-ns() or some weird syntax I kinda think may be
> > possible.
> >
> >> M
> >>
> >>> On 18 Jun 2020, at 09:53, Alex Dettinger <al...@gmail.com>
> wrote:
> >>>
> >>> Hi Mikael,
> >>>
> >>> I've noticed that the incoming xml file is involving 2 xml namespaces
> >>> while the query looks not.
> >>> Precising namespaces in the xpath query may help to move further,
> something
> >>> like:
> >>>
> https://github.com/apache/camel/blob/master/core/camel-core/src/test/java/org/apache/camel/builder/xml/XPathTest.java#L241
> >>>
> >>> hth,
> >>> Alex
> >>>
> >>> On Thu, Jun 18, 2020 at 9:36 AM Mikael Andersson Wigander <
> >>> mikael.grevsten@gmail.com> wrote:
> >>>
> >>>> Hi
> >>>>
> >>>> My problem is that I can’t extract some XML using xpath in Camel 3.3.0
> >>>>
> >>>> My incoming XML is complicated where my target tag <Tx></Tx> also has
> a
> >>>> tag further down the tree as <Tx></Tx>.
> >>>>
> >>>> I have created a demo project on Github for share if someone could
> help
> >>>> me. https://github.com/hakuseki/xpath
> >>>>
> >>>> I have tested with a more “friendly” XML and both tests manage to
> retrieve
> >>>> the XML segment I want.
> >>>>
> >>>> This type of XML we get from client is based on a EU/ESMA standard.
> >>>>
> >>>> Pls advice
> >>>>
> >>>> Thx
> >>>>
> >>>> /M
> >>>>
> >>>>
> >>
> >
> >
> > --
> > Claus Ibsen
> > -----------------
> > http://davsclaus.com <http://davsclaus.com/> @davsclaus
> > Camel in Action 2: https://www.manning.com/ibsen2 <
> https://www.manning.com/ibsen2>
>


-- 
Bob Anderson
+27 (0) 82 389 0335
[image: View my profile on LinkedIn]
<http://ng.linkedin.com/pub/bob-anderson/2/25/9b5>

Re: Unable to XPath, as bean or as split with complex XML

Posted by Mikael Andersson Wigander <mi...@gmail.com>.
My latest tests reveal that when using local-name() I get everything with the tag <Tx> (of course).

But I cannot see how to manipulate the xpath expression.

final XPathBuilder xPathBuilder = XPathBuilder.xpath("//*[local-name()='Tx']");

When trying out it in http://xpather.com/ using 

//FinInstrmRptgTxRpt/*[local-name()='Tx']

I get what I want but not in my code,. it returns nothing

final XPathBuilder xPathBuilder = XPathBuilder.xpath("//FinInstrmRptgTxRpt/*[local-name()='Tx']");



> On 18 Jun 2020, at 10:39, Claus Ibsen <cl...@gmail.com> wrote:
> 
> On Thu, Jun 18, 2020 at 10:15 AM Mikael Andersson Wigander
> <mikael.grevsten@gmail.com <ma...@gmail.com>> wrote:
>> 
>> OK, interesting.
>> 
>> I tested the Xpath using a online tester and there it works without using any namespace.
>> 
>> Is it possible using XPath without namespaces or are there any xpath arguments that can be used?
>> 
> 
> No really not, java xpath requires the namespace, but there is some
> "trick" with local-ns() or some weird syntax I kinda think may be
> possible.
> 
>> M
>> 
>>> On 18 Jun 2020, at 09:53, Alex Dettinger <al...@gmail.com> wrote:
>>> 
>>> Hi Mikael,
>>> 
>>> I've noticed that the incoming xml file is involving 2 xml namespaces
>>> while the query looks not.
>>> Precising namespaces in the xpath query may help to move further, something
>>> like:
>>> https://github.com/apache/camel/blob/master/core/camel-core/src/test/java/org/apache/camel/builder/xml/XPathTest.java#L241
>>> 
>>> hth,
>>> Alex
>>> 
>>> On Thu, Jun 18, 2020 at 9:36 AM Mikael Andersson Wigander <
>>> mikael.grevsten@gmail.com> wrote:
>>> 
>>>> Hi
>>>> 
>>>> My problem is that I can’t extract some XML using xpath in Camel 3.3.0
>>>> 
>>>> My incoming XML is complicated where my target tag <Tx></Tx> also has a
>>>> tag further down the tree as <Tx></Tx>.
>>>> 
>>>> I have created a demo project on Github for share if someone could help
>>>> me. https://github.com/hakuseki/xpath
>>>> 
>>>> I have tested with a more “friendly” XML and both tests manage to retrieve
>>>> the XML segment I want.
>>>> 
>>>> This type of XML we get from client is based on a EU/ESMA standard.
>>>> 
>>>> Pls advice
>>>> 
>>>> Thx
>>>> 
>>>> /M
>>>> 
>>>> 
>> 
> 
> 
> -- 
> Claus Ibsen
> -----------------
> http://davsclaus.com <http://davsclaus.com/> @davsclaus
> Camel in Action 2: https://www.manning.com/ibsen2 <https://www.manning.com/ibsen2>

Re: Unable to XPath, as bean or as split with complex XML

Posted by Claus Ibsen <cl...@gmail.com>.
On Thu, Jun 18, 2020 at 10:15 AM Mikael Andersson Wigander
<mi...@gmail.com> wrote:
>
> OK, interesting.
>
> I tested the Xpath using a online tester and there it works without using any namespace.
>
> Is it possible using XPath without namespaces or are there any xpath arguments that can be used?
>

No really not, java xpath requires the namespace, but there is some
"trick" with local-ns() or some weird syntax I kinda think may be
possible.

> M
>
> > On 18 Jun 2020, at 09:53, Alex Dettinger <al...@gmail.com> wrote:
> >
> > Hi Mikael,
> >
> >  I've noticed that the incoming xml file is involving 2 xml namespaces
> > while the query looks not.
> > Precising namespaces in the xpath query may help to move further, something
> > like:
> > https://github.com/apache/camel/blob/master/core/camel-core/src/test/java/org/apache/camel/builder/xml/XPathTest.java#L241
> >
> > hth,
> > Alex
> >
> > On Thu, Jun 18, 2020 at 9:36 AM Mikael Andersson Wigander <
> > mikael.grevsten@gmail.com> wrote:
> >
> >> Hi
> >>
> >> My problem is that I can’t extract some XML using xpath in Camel 3.3.0
> >>
> >> My incoming XML is complicated where my target tag <Tx></Tx> also has a
> >> tag further down the tree as <Tx></Tx>.
> >>
> >> I have created a demo project on Github for share if someone could help
> >> me. https://github.com/hakuseki/xpath
> >>
> >> I have tested with a more “friendly” XML and both tests manage to retrieve
> >> the XML segment I want.
> >>
> >> This type of XML we get from client is based on a EU/ESMA standard.
> >>
> >> Pls advice
> >>
> >> Thx
> >>
> >> /M
> >>
> >>
>


-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Re: Unable to XPath, as bean or as split with complex XML

Posted by Mikael Andersson Wigander <mi...@gmail.com>.
OK, interesting.

I tested the Xpath using a online tester and there it works without using any namespace.

Is it possible using XPath without namespaces or are there any xpath arguments that can be used?

M

> On 18 Jun 2020, at 09:53, Alex Dettinger <al...@gmail.com> wrote:
> 
> Hi Mikael,
> 
>  I've noticed that the incoming xml file is involving 2 xml namespaces
> while the query looks not.
> Precising namespaces in the xpath query may help to move further, something
> like:
> https://github.com/apache/camel/blob/master/core/camel-core/src/test/java/org/apache/camel/builder/xml/XPathTest.java#L241
> 
> hth,
> Alex
> 
> On Thu, Jun 18, 2020 at 9:36 AM Mikael Andersson Wigander <
> mikael.grevsten@gmail.com> wrote:
> 
>> Hi
>> 
>> My problem is that I can’t extract some XML using xpath in Camel 3.3.0
>> 
>> My incoming XML is complicated where my target tag <Tx></Tx> also has a
>> tag further down the tree as <Tx></Tx>.
>> 
>> I have created a demo project on Github for share if someone could help
>> me. https://github.com/hakuseki/xpath
>> 
>> I have tested with a more “friendly” XML and both tests manage to retrieve
>> the XML segment I want.
>> 
>> This type of XML we get from client is based on a EU/ESMA standard.
>> 
>> Pls advice
>> 
>> Thx
>> 
>> /M
>> 
>> 


Re: Unable to XPath, as bean or as split with complex XML

Posted by Alex Dettinger <al...@gmail.com>.
Hi Mikael,

  I've noticed that the incoming xml file is involving 2 xml namespaces
while the query looks not.
Precising namespaces in the xpath query may help to move further, something
like:
https://github.com/apache/camel/blob/master/core/camel-core/src/test/java/org/apache/camel/builder/xml/XPathTest.java#L241

hth,
Alex

On Thu, Jun 18, 2020 at 9:36 AM Mikael Andersson Wigander <
mikael.grevsten@gmail.com> wrote:

> Hi
>
> My problem is that I can’t extract some XML using xpath in Camel 3.3.0
>
> My incoming XML is complicated where my target tag <Tx></Tx> also has a
> tag further down the tree as <Tx></Tx>.
>
> I have created a demo project on Github for share if someone could help
> me. https://github.com/hakuseki/xpath
>
> I have tested with a more “friendly” XML and both tests manage to retrieve
> the XML segment I want.
>
> This type of XML we get from client is based on a EU/ESMA standard.
>
> Pls advice
>
> Thx
>
> /M
>
>