/* Copyright 2006 The Apache Software Foundation | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/ | |
package misc.detailed; | |
import org.apache.xmlbeans.XmlObject; | |
import org.apache.xmlbeans.XmlOptions; | |
import org.junit.Test; | |
import javax.xml.stream.XMLStreamReader; | |
import static org.junit.Assert.assertTrue; | |
/** | |
* Adapted from testcase submitted by Brian Bonner for JIRA issue | |
* XMLBEANS-222, based on comments by Cezar Andrei. | |
*/ | |
public class XMLStreamReaderTest { | |
private static final String soapMsg = "<SOAP:Envelope xmlns:SOAP=\"http://schemas.xmlsoap.org/soap/envelope/\" " | |
+ "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " | |
+ "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" | |
+ "<SOAP:Body>" | |
+ "<PriceandAvailabilityResponse xmlns=\"http://www.foobar.com\">" | |
+ "<Header/>" | |
+ "<Body>" | |
+ "<UPC xsi:nil=\"true\"/>" | |
+ "</Body>" | |
+ "</PriceandAvailabilityResponse>" | |
+ "</SOAP:Body>" | |
+ "</SOAP:Envelope>"; | |
@Test | |
public void testXmlStreamReader1() throws Exception { | |
XmlObject object = XmlObject.Factory.parse(soapMsg); | |
XmlOptions opts = new XmlOptions().setSaveOuter(); | |
XMLStreamReader reader = object.newXMLStreamReader(opts); | |
boolean foundXsiNamespace = false; | |
while (reader.hasNext()) { | |
int event = reader.next(); | |
if (event == XMLStreamReader.START_ELEMENT) { | |
System.out.println("namespace count: " + reader.getNamespaceCount()); | |
for (int i = 0; i < reader.getNamespaceCount(); i++) { | |
if (reader.getNamespacePrefix(i).equals("xsi")) { | |
foundXsiNamespace = true; | |
} | |
System.out.println("Namespace " | |
+ reader.getNamespacePrefix(i) + ": " | |
+ reader.getNamespaceURI(i)); | |
} | |
} | |
} | |
assertTrue("xsi namespace is not found", foundXsiNamespace); | |
} | |
@Test | |
public void testXmlStreamReader2() throws Exception { | |
XmlObject object = XmlObject.Factory.parse(soapMsg); | |
XMLStreamReader reader = object.newXMLStreamReader(); | |
boolean foundXsiNamespace = false; | |
int event = reader.getEventType(); | |
do | |
{ | |
if (event == XMLStreamReader.START_ELEMENT) | |
{ | |
System.out.println("namespace count: " + reader.getNamespaceCount()); | |
for (int i = 0; i < reader.getNamespaceCount(); i++) | |
{ | |
if (reader.getNamespacePrefix(i).equals("xsi")) | |
{ | |
foundXsiNamespace = true; | |
} | |
System.out.println("Namespace " | |
+ reader.getNamespacePrefix(i) + ": " | |
+ reader.getNamespaceURI(i)); | |
} | |
} | |
event = reader.next(); | |
} | |
while (reader.hasNext()); | |
assertTrue("xsi namespace is not found", foundXsiNamespace); | |
} | |
} |