Is it a mistake to expect to be able to cast the result from a cursor.getObject 
call to a type generated from schema?

The Java code below receives an XML document that conforms to my schema. When 
it uses a query to get certain elements of that document, the getObject return 
value representing one of those elements can't be cast to the matching type 
generated from my schema. Instead, I get a ClassCastException. The XML 
represented by the return value appears to match my schema just fine.

I can send the XML and schema if need be.


    final static String m_namespaceDeclaration =
                "declare namespace 
xq='http://xmlbeans.apache.org/samples/xquery/employees';";
    
    public boolean selectEmpsByStateCursor(XmlObject empDoc)
    {
        boolean hasResults = false;
        
        // A cursor instance to query with.
        XmlCursor empCursor = empDoc.newCursor();
        empCursor.toNextToken();

        // Get the <employee> elements with <state> elements whose
        // value is "WA".
        String queryExpression =
                "for $e in $this/xq:employees/xq:employee " +
                "let $s := $e/xq:address/xq:state " +
                "where $s = 'WA' " +
                "return $e";

        // Execute the query. Results, if any, will be available at 
        // the position of the resultCursor.
        XmlCursor resultCursor = 
            empCursor.execQuery(m_namespaceDeclaration + queryExpression);
        resultCursor.toFirstContentToken();

        // Use the cursor to loop through the results, printing each sibling
        // <employee> element returned by the query.
        do 
        {
            int i = 0;
            if (resultCursor.currentTokenType() == XmlCursor.TokenType.START)
            {
                hasResults = true;

                // EXCEPTION ON THIS LINE.
                EmployeeType resultXml = 
(EmployeeType)resultCursor.getObject();                
                System.out.println("Result " + i + ":\n" + resultXml.toString() 
+ "\n");
                i++;
            }
        } while (resultCursor.toNextSibling());
        
        return hasResults;
    }

Thanks,
Steve

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to