1 57 58 package org.enhydra.apache.xerces.readers; 59 60 import org.enhydra.apache.xerces.framework.XMLErrorReporter; 61 import org.enhydra.apache.xerces.utils.ChunkyByteArray; 62 import org.enhydra.apache.xerces.utils.StringPool; 63 64 68 final class UCSRecognizer extends XMLDeclRecognizer { 69 public XMLEntityHandler.EntityReader recognize(XMLEntityReaderFactory readerFactory, 73 XMLEntityHandler entityHandler, 74 XMLErrorReporter errorReporter, 75 boolean sendCharDataAsCharArray, 76 StringPool stringPool, 77 ChunkyByteArray data, 78 boolean xmlDecl, 79 boolean allowJavaEncodingName) throws Exception 80 { 81 XMLEntityHandler.EntityReader reader = null; 82 byte b0 = data.byteAt(0); 83 if (b0 == 0) { 84 int b1 = data.byteAt(1); 85 if (b1 == 0) { 86 if (data.byteAt(2) == 0 && data.byteAt(3) == '<') 87 reader = new UCSReader(entityHandler, errorReporter, sendCharDataAsCharArray, data, UCSReader.E_UCS4B, stringPool); 88 } else if (b1 == '<') { 89 if (data.byteAt(2) == 0 && data.byteAt(3) == '?') 90 reader = new UCSReader(entityHandler, errorReporter, sendCharDataAsCharArray, data, UCSReader.E_UCS2B_NOBOM, stringPool); 91 } 92 } else if (b0 == '<') { 93 int b1 = data.byteAt(1); 94 if (b1 == 0) { 95 int b2 = data.byteAt(2); 96 if (data.byteAt(3) == 0) { 97 if (b2 == 0) 98 reader = new UCSReader(entityHandler, errorReporter, sendCharDataAsCharArray, data, UCSReader.E_UCS4L, stringPool); 99 else if (b2 == '?') 100 reader = new UCSReader(entityHandler, errorReporter, sendCharDataAsCharArray, data, UCSReader.E_UCS2L_NOBOM, stringPool); 101 } 102 } 103 } else if (b0 == (byte)0xfe) { 104 if (data.byteAt(1) == (byte)0xff) 105 reader = new UCSReader(entityHandler, errorReporter, sendCharDataAsCharArray, data, UCSReader.E_UCS2B, stringPool); 106 } else if (b0 == (byte)0xff) { 107 if (data.byteAt(1) == (byte)0xfe) 108 reader = new UCSReader(entityHandler, errorReporter, sendCharDataAsCharArray, data, UCSReader.E_UCS2L, stringPool); 109 } 110 return reader; 111 } 112 } 113 | Popular Tags |