[
https://issues.apache.org/jira/browse/JXPATH-154?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13192085#comment-13192085
]
Hugo de Almeida Cocharro commented on JXPATH-154:
-------------------------------------------------
Thanks a lot, I build the current 1.4 from svn and it fixes our case.
> Resetting the default namespace causes a serious endless loop when requesting
> .asPath() on a node.
> --------------------------------------------------------------------------------------------------
>
> Key: JXPATH-154
> URL: https://issues.apache.org/jira/browse/JXPATH-154
> Project: Commons JXPath
> Issue Type: Bug
> Affects Versions: 1.3
> Environment: jxpath eclipse plugin from orbit
> Reporter: Hugo de Almeida Cocharro
> Fix For: 1.4
>
>
> sample smaller case:
> {code}
> <...>
> <b:foo xmlns:b="bla" xmlns="test111"> <!-- No nodes are placed in the
> tree within ns "test111" but the attribute is still there.-->
> <b:bar>a</b:bar> <!-- is in ns 'bla' -->
> <test xmlns=""></test> <!-- does not have a namespace -->
> </b:foo>
> </...>
> {code}
> when requesting .asPath() on the 'test' node, it loops in
> org.apache.commons.jxpath.ri.NamespaceResolver.getPrefix(NodePointer,
> String),
> and if it didn't loop it would create a wrong xpath '//b:fo/null:test'
> DOMNodePointer.asPath().
> So I think that the fix should be in
> org.apache.commons.jxpath.ri.model.dom.DOMNodePointer.asPath()
> {code}
> ....
> String ln = DOMNodePointer.getLocalName(node);
> String nsURI = getNamespaceURI();
> if (nsURI == null) {
> buffer.append(ln);
> buffer.append('[');
>
> buffer.append(getRelativePositionByName()).append(']');
> }
> else {
> String prefix =
> getNamespaceResolver().getPrefix(nsURI);
> if (prefix != null) {
> ...
> {code}
> should become
> {code}
> ...
> String ln = DOMNodePointer.getLocalName(node);
> String nsURI = getNamespaceURI();
> if (nsURI == null || nsURI.length() == 0) { // check for
> empty string which means that the node doesn't have a namespace.
> buffer.append(ln);
> buffer.append('[');
>
> buffer.append(getRelativePositionByName()).append(']');
> }
> else {
> String prefix =
> getNamespaceResolver().getPrefix(nsURI);
> if (prefix != null) {
> ...
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira