[ https://issues.apache.org/jira/browse/XMLBEANS-331?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Steffan Westcott updated XMLBEANS-331: -------------------------------------- Description: Deleting TEXT tokens in a document appears to confuse the selectPath() functionality. Here is a complete demonstration program : package bug; import org.apache.xmlbeans.XmlCursor; import org.apache.xmlbeans.XmlObject; public class Bug { static String doc ="<?xml version='1.0' encoding='UTF-8'?><a><b/>text<b/></a>"; static String query = "//b[2]"; public static void main(String[] args) { try { // Initialise XmlObject and cursor XmlObject obj = XmlObject.Factory.parse(doc); System.out.println("Intitial document :\n" + obj.toString()); XmlCursor cur = obj.newCursor(); // Select the second b node - Works fine... cur.selectPath(query); System.out.println(query + " finds " + cur.getSelectionCount() + " objects"); // Delete the text node cur.toStartDoc(); cur.selectPath("/a/text()"); cur.toSelection(0); cur.removeXml(); System.out.println("After removing text node :\n" + obj.toString()); // Select the second b node - Doesn't work!!! cur.selectPath(query); System.out.println(query + " finds " + cur.getSelectionCount() + " objects"); cur.dispose(); } catch (Exception e) { e.printStackTrace(); } } } This produces the following output : Intitial document : <a> <b/> text <b/> </a> //b[2] finds 1 objects After removing text node : <a> <b/> <b/> </a> //b[2] finds 0 objects Deleting ATTR, START (i.e. a whole element), COMMENT and PROCINST tokens do not exhibit this problem, it appears to only affect TEXT tokens. was: Deleting TEXT tokens in a document appears to confuse the selectPath() functionality. Here is a complete demonstration program : package bug; import org.apache.xmlbeans.XmlCursor; import org.apache.xmlbeans.XmlObject; public class Bug { static String doc ="<?xml version='1.0' encoding='UTF-8'?><a><b/>text<b/></a>"; static String query = "//b[2]"; public static void main(String[] args) { try { // Initialise XmlObject and cursor XmlObject obj = XmlObject.Factory.parse(doc); System.out.println("Intitial document :\n" + obj.toString()); XmlCursor cur = obj.newCursor(); // Select the second b node - Works fine... cur.selectPath(query); System.out.println(query + " finds " + cur.getSelectionCount() + " objects"); // Delete the text node cur.toStartDoc(); cur.selectPath("/a/text()"); cur.toSelection(0); cur.removeXml(); System.out.println("After removing text node :\n" + obj.toString()); // Select the second b node - Doesn't work!!! cur.selectPath(query); System.out.println(query + " finds " + cur.getSelectionCount() + " objects"); cur.dispose(); } catch (Exception e) { e.printStackTrace(); } } } This produces the following output : Intitial document : <a> <b/> text <b/> </a> //b[2] finds 1 objects After removing text node : <a> <b/> <b/> </a> //b[2] finds 0 objects Adding further info that deleting non-TEXT tokens does not have same problem. > Deleting text node causes some XPath select queries to fail > ----------------------------------------------------------- > > Key: XMLBEANS-331 > URL: https://issues.apache.org/jira/browse/XMLBEANS-331 > Project: XMLBeans > Issue Type: Bug > Components: XPath > Affects Versions: Version 2.1, Version 2.2 > Environment: Windows XP Service Pack 2, JDK 1.6.0_01 > Reporter: Steffan Westcott > > Deleting TEXT tokens in a document appears to confuse the selectPath() > functionality. Here is a complete demonstration program : > package bug; > import org.apache.xmlbeans.XmlCursor; > import org.apache.xmlbeans.XmlObject; > public class Bug { > static String doc ="<?xml version='1.0' > encoding='UTF-8'?><a><b/>text<b/></a>"; > static String query = "//b[2]"; > > public static void main(String[] args) { > try { > // Initialise XmlObject and cursor > XmlObject obj = XmlObject.Factory.parse(doc); > System.out.println("Intitial document :\n" + obj.toString()); > XmlCursor cur = obj.newCursor(); > > // Select the second b node - Works fine... > cur.selectPath(query); > System.out.println(query + " finds " + cur.getSelectionCount() + > " objects"); > > // Delete the text node > cur.toStartDoc(); > cur.selectPath("/a/text()"); > cur.toSelection(0); > cur.removeXml(); > System.out.println("After removing text node :\n" + > obj.toString()); > > // Select the second b node - Doesn't work!!! > cur.selectPath(query); > System.out.println(query + " finds " + cur.getSelectionCount() + > " objects"); > > cur.dispose(); > } catch (Exception e) { > e.printStackTrace(); > } > } > } > This produces the following output : > Intitial document : > <a> > <b/> > text > <b/> > </a> > //b[2] finds 1 objects > After removing text node : > <a> > <b/> > <b/> > </a> > //b[2] finds 0 objects > Deleting ATTR, START (i.e. a whole element), COMMENT and PROCINST tokens do > not exhibit this problem, it appears to only affect TEXT tokens. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]