You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xmlbeans.apache.org by "Cezar Andrei (JIRA)" <xm...@xml.apache.org> on 2006/05/09 02:13:27 UTC
[jira] Resolved: (XMLBEANS-222) new XmlStreamReader from XmlObject
doesn't capture xsi namespace in outer element
[ http://issues.apache.org/jira/browse/XMLBEANS-222?page=all ]
Cezar Andrei resolved XMLBEANS-222:
-----------------------------------
Resolution: Fixed
There are two things happening here:
1. the semantics of XmlObject.newXMLStreamReader() is not exactly the same as XMLInputFactory.newInstance().createXMLStreamReader(). The difference is that it doesn't emit the start/end doc events, this is because in general an XmlObject represents the content and there isn't a special case for a Document XmlObject.
2. Once you get an XMLStreamReader the code calls imediately next() which advances the reader to the next event after Soaf:Envelope, so efectively missing the namespaces.
while (reader.hasNext()) {
int event = reader.next();
To catch the namespaces in question the test code has to be modified in one of the two following ways:
1) add an option to start with START_DOC event
XmlOptions opts = new XmlOptions().setSaveOuter();
XMLStreamReader reader = object.newXMLStreamReader(opts);
2) or modify the logic to check the first event
XMLStreamReader reader = object.newXMLStreamReader();
boolean foundXsiNamespace = false;
int event = reader.getEventType();
do
{
if (event == XMLStreamReader.START_ELEMENT)
{
for (int i = 0; i < reader.getNamespaceCount(); i++)
{
if (reader.getNamespacePrefix(i).equals("xsi"))
{
foundXsiNamespace = true;
}
System.out.println(" testXMLStreamReader Namespace " + reader.getNamespacePrefix(i) + " : " +
reader.getNamespaceURI(i));
}
}
event = reader.next();
}
while (reader.hasNext());
System.out.println(" xsi Namespace: " + foundXsiNamespace);
> new XmlStreamReader from XmlObject doesn't capture xsi namespace in outer element
> ---------------------------------------------------------------------------------
>
> Key: XMLBEANS-222
> URL: http://issues.apache.org/jira/browse/XMLBEANS-222
> Project: XMLBeans
> Type: Bug
> Components: XmlObject
> Versions: Version 2
> Environment: jdk 1.4.2_08, xmlbeans 2.0
> Reporter: Brian Bonner
> Attachments: XmlStreamReaderTest.java
>
> I'll attach a test case.
> I'm parsing a SOAP envelope which has the xsi namespace declared in the outer envelope. An element of the body uses the prefix for one of it's attributes (i.e. xsi:nil="true").
> reader.getNamespaceCount() doesn't seem to find it. If we create the XMLStream from a reader using an InputFactory (vs. using the creator from JSR173.class, it works, but will probably be slower.)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@xmlbeans.apache.org
For additional commands, e-mail: dev-help@xmlbeans.apache.org