XmlCursor.getTextValue returns concatenation of child text, comment, and
processing instruction nodes
-----------------------------------------------------------------------------------------------------
Key: XMLBEANS-311
URL: https://issues.apache.org/jira/browse/XMLBEANS-311
Project: XMLBeans
Issue Type: Bug
Components: Cursor
Affects Versions: Version 2.2.1
Environment: Microsoft Windows XP Professional Version 2002 (Service
Pack 2)
Intel Pentium 4 CPU 3.00GHZ
Reporter: Coram Bryant
Priority: Minor
According to the XmlBeans javadocs, if the XmlCursor corresponds to an element
then non-text content such as comments and processing instructions are ignored.
However, as the following test shows, this is not the case:
String xml = "<element><!--A Comment-->999<?PI A Processing
Instruction?></element>";
XmlObject xo = XmlObject.Factory.parse(xml);
XmlCursor xc = xo.newCursor();
xc.toFirstChild();
System.out.println(xc.currentTokenType()); // Verify that we are positioned at
the start of an element
System.out.println(xc.getTextValue());
This prints out:
START
A Comment 999A Processing Instruction
Analysis:
In this case, the call stack is as follows:
org.apache.xmlbeans.impl.store.Cursor.getTextValue
org.apache.xmlbeans.impl.store.Cursor._getTextValue
org.apache.xmlbeans.impl.store.Locale.getTextValue
In this method, the text value is built up with the text of instances of Cur
for which the isText method returns true. I believe the
org.apache.xmlbeans.impl.store.Cur.isText method should be as follows:
boolean isText ( ) { assert isPositioned(); return _pos > 0 &&
kindIsContainer(_xobj.kind()); }
This would exclude comments and processing instructions.
--
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]