[jboss-dev-forums] [Design of JBossXB] - Re: Ignoring non-ignorable white space?
wolfc
do-not-reply at jboss.com
Fri Jun 8 05:51:04 EDT 2007
Wicked, when I try the following:
import java.io.IOException;
| import java.io.StringReader;
| import javax.xml.parsers.ParserConfigurationException;
| import javax.xml.parsers.SAXParserFactory;
| import javax.xml.transform.stream.StreamSource;
| import javax.xml.validation.Schema;
| import javax.xml.validation.SchemaFactory;
| import javax.xml.validation.ValidatorHandler;
| import org.xml.sax.InputSource;
| import org.xml.sax.SAXException;
| import org.xml.sax.XMLReader;
| import org.xml.sax.helpers.DefaultHandler;
|
|
| public class test {
|
| public static final String XSD = "<?xml version='1.0'?>\n"
| + "<schema xmlns='http://www.w3.org/2001/XMLSchema'\n"
| + " xmlns:test='jaxp13_test'\n"
| + " targetNamespace='jaxp13_test'\n"
| + " elementFormDefault='qualified'>\n"
| + " <element name='test'>\n"
| + " <complexType>\n"
| + " <sequence>\n"
| + " <element name='child' type='string' maxOccurs='unbounded'/>\n"
| + " </sequence>\n"
| + " </complexType>\n"
| + " </element>\n"
| + "</schema>\n";
|
| public static final String XML = "<?xml version='1.0'?>\n"
| + "<ns:test xmlns:ns='jaxp13_test'>\n"
| + " <ns:child> </ns:child>\n"
| + " <ns:child> 123 </ns:child>\n"
| + "</ns:test>\n";
|
|
| private ValidatorHandler createValidatorHandler(String xsd)
| throws SAXException {
| SchemaFactory schemaFactory =
| SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
|
| StringReader reader = new StringReader(xsd);
| StreamSource xsdSource = new StreamSource(reader);
|
| Schema schema = schemaFactory.newSchema(xsdSource);
| return schema.newValidatorHandler();
| }
|
| private XMLReader createXMLReader() throws ParserConfigurationException,
| SAXException {
| SAXParserFactory parserFactory = SAXParserFactory.newInstance();
| if (!parserFactory.isNamespaceAware()) {
| parserFactory.setNamespaceAware(true);
| }
|
| return parserFactory.newSAXParser().getXMLReader();
| }
|
| private void parse(XMLReader xmlReader, String xml) throws SAXException,
| IOException {
| StringReader reader = new StringReader(xml);
| InputSource inSource = new InputSource(reader);
|
| xmlReader.parse(inSource);
| }
|
| public static void main(String argv[]) {
| try {
| new test().run();
| } catch (Exception e) {
| e.printStackTrace();
| System.exit(1);
| }
| }
|
| public void run() throws SAXException, ParserConfigurationException,
| IOException {
| XMLReader xmlReader = createXMLReader();
| ValidatorHandler validatorHandler = createValidatorHandler(XSD);
| xmlReader.setContentHandler(validatorHandler);
|
| final boolean[] invoked = {false};
| DefaultHandler contentHandler = new DefaultHandler() {
| @Override
| public void characters(char[] ch, int start, int length) throws SAXException
| {
| StringBuffer sb = new StringBuffer();
| sb.append(ch, start, length);
| System.err.println("characters: '" + sb.toString() + "'");
| }
|
| public void ignorableWhitespace(char[] ch,
| int start,
| int length)
| throws SAXException {
| StringBuffer sb = new StringBuffer();
| sb.append(ch, start, length);
| System.err.println("whitespace: '" + sb.toString() + "'");
| invoked[0] = true;
| }
| };
| validatorHandler.setContentHandler(contentHandler);
|
| parse(xmlReader, XML);
|
| if (!invoked[0]) {
| System.out.println("Method ignorableWhitespace() was not invoked.");
| } else {
| System.out.println("OK");
| }
| }
| }
I get:
whitespace: '
| '
| characters: ' '
| whitespace: '
| '
| characters: ' 123 '
| whitespace: '
| '
| OK
java version "1.5.0_11"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_11-b03)
Java HotSpot(TM) Client VM (build 1.5.0_11-b03, mixed mode, sharing)
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4052479#4052479
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4052479
More information about the jboss-dev-forums
mailing list