You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by "Claus Ibsen (JIRA)" <ji...@apache.org> on 2010/09/26 07:39:44 UTC

[jira] Issue Comment Edited: (CAMEL-3155) Default namespace not handled by .when(xpath(string))

    [ https://issues.apache.org/activemq/browse/CAMEL-3155?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=62109#action_62109 ] 

Claus Ibsen edited comment on CAMEL-3155 at 9/26/10 1:36 AM:
-------------------------------------------------------------

And no I could not find a solution with the XPath API to let it be aware of the default namesapce. There seems to be no good hooks for such kind.

Even if I added what may be a default namespace to the NamespaceContext the xpath would still fail. The only solution I could get working is to use namespace prefixes in the xpath expressions.

And the XPathExpression does not offer any callbacks or hooks to influence the compiling. And I bet doing a string based manipulation of the given String for the namespace is hard because people can use a lot of different combinations.

So if you have a simple expression like
{code}
/foo/bar
{code}

Then it may be possible to manipulate it beforehand and do
{code}
/c:foo/c:bar
{code}

And register c as a namespace with the uri from the XML message.

But when the xpath expression becomes more complex, its much harder.

So I wonder there must be better ways that this?

      was (Author: davsclaus):
    And no I could not find a solution with the XPath API to let it be aware of the default namesapce. There seems to be no good hooks for such kind.

Even if I added what may be a default namespace to the NamespaceContext the xpath would still fail. The only solution I could get working is to use namespace prefixes in the xpath expressions.

And the XPathExpression does not offer any callbacks or hooks to influence the compiling. And I bet doing a string based manipulation of the given String for the namespace is hard because people can use a lot of different combinations.

So if you have a simple expression like
{code}
/foo/bar
{code}

Then it may be possible to manipulate it beforehand and do
{code}
/c:foo/c:/bar
{code}

And register c as a namespace with the uri from the XML message.

But when the xpath expression becomes more complex, its much harder.

So I wonder there must be better ways that this?
  
> Default namespace not handled by .when(xpath(string))
> -----------------------------------------------------
>
>                 Key: CAMEL-3155
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-3155
>             Project: Apache Camel
>          Issue Type: Improvement
>          Components: camel-core
>    Affects Versions: 2.4.0
>         Environment: Apache Maven 3.0-alpha-5 (r883378; 2009-11-23 07:53:41-0800)
> Java version: 1.6.0_17
> Java home: C:\Program Files\Java\jdk1.6.0_17\jre
> Default locale: en_US, platform encoding: Cp1252
> OS name: "windows 7" version: "6.1" arch: "x86" Family: "windows"
>            Reporter: Malachi de AElfweald
>            Assignee: Claus Ibsen
>            Priority: Minor
>   Original Estimate: 2 hours
>  Remaining Estimate: 2 hours
>
> If I do a .choice().when(xpath("//rootnode")) it fails to find any matches unless I preprocess and remove the xmlns="blah" (autogenerated by JAXB on the other end)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.