Package io.github.xstream.mxparser
Class MXParser
java.lang.Object
io.github.xstream.mxparser.MXParser
- All Implemented Interfaces:
org.xmlpull.v1.XmlPullParser
Absolutely minimal implementation of XMLPULL V1 API
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate boolean
Implementation notice: the is instance variable that controls if newString() is interning.private int
private String[]
private int[]
private String[]
private String[]
private String[]
private char[]
private int
private int
private float
private int
private int
private int
private char[]
private int
private int
private String[]
private int[]
private String[]
private char[][]
private int[]
private int[]
private String[]
private boolean
private int
private String[]
private char[][]
private int[]
private String
private String[]
private char[][]
private int
private static final String
private static final String
private String
private int
private String
private static final int
private static final char
private static boolean[]
private static boolean[]
private int
private String[]
private int[]
private String[]
private static final char[]
private static final char[]
private static boolean
private boolean
private char[]
private int
private int
private int
private int
private int
private boolean
private boolean
private static final String
private static final String
private static final String
private static final String
private boolean
private static final int
private Reader
private boolean
private boolean
private boolean
private boolean
private boolean
private boolean
private boolean
private static final char[]
private String
private boolean
private static final boolean
private boolean
private static final char[]
private static final String
private String
private Boolean
private String
private static final String
private static final char[]
Fields inherited from interface org.xmlpull.v1.XmlPullParser
CDSECT, COMMENT, DOCDECL, END_DOCUMENT, END_TAG, ENTITY_REF, FEATURE_PROCESS_DOCDECL, FEATURE_PROCESS_NAMESPACES, FEATURE_REPORT_NAMESPACE_ATTRIBUTES, FEATURE_VALIDATION, IGNORABLE_WHITESPACE, NO_NAMESPACE, PROCESSING_INSTRUCTION, START_DOCUMENT, START_TAG, TEXT, TYPES
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
defineEntityReplacementText
(String entityName, String replacementText) private void
ensureAttributesCapacity
(int size) Make sure that in attributes temporary array is enough space.private void
Make sure that we have enough space to keep element stack if passed size.private void
private void
ensureNamespacesCapacity
(int size) private void
ensurePC
(int end) private static final int
fastHash
(char[] ch, int off, int len) simplistic implementation of hash function that has constant time to compute - so it also means diminishing hash quality for long strings but for XML parsing it should be good enough ...private void
fillBuf()
private static int
findFragment
(int bufMinPos, char[] b, int start, int end) int
getAttributeName
(int index) getAttributeNamespace
(int index) getAttributePrefix
(int index) getAttributeType
(int index) getAttributeValue
(int index) getAttributeValue
(String namespace, String name) int
int
getDepth()
int
boolean
getFeature
(String name) Unknown properties are always returned as falseint
getName()
getNamespace
(String prefix) int
getNamespaceCount
(int depth) getNamespacePrefix
(int pos) getNamespaceUri
(int pos) Return string describing current position of parsers as text 'STATE [seen %s...] @line:column'.getProperty
(String name) getText()
char[]
getTextCharacters
(int[] holderForStartAndLength) boolean
isAttributeDefault
(int index) boolean
private boolean
isNameChar
(char ch) private boolean
isNameStartChar
(char ch) private boolean
isS
(char ch) boolean
private void
joinPC()
private char[]
lookupEntityReplacement
(int entityNameLen) private char
more()
private String
newString
(char[] cbuf, int off, int len) private String
newStringIntern
(char[] cbuf, int off, int len) int
next()
private int
nextImpl()
int
nextTag()
nextText()
int
private char
private void
parseCDSect
(boolean hadCharData) private void
private void
int
private char[]
private int
private boolean
parsePI()
private int
int
private void
parseXmlDecl
(char ch) private void
parseXmlDeclWithVersion
(int versionStart, int versionEnd) private String
printable
(char ch) private String
void
private char
requireInput
(char ch, char[] input) private char
private void
reset()
private void
void
setFeature
(String name, boolean state) Method setFeaturevoid
setInput
(InputStream inputStream, String inputEncoding) void
private static final void
setName
(char ch) private static final void
setNameStart
(char ch) void
setProperty
(String name, Object value) private char
skipS
(char ch) void
Skip sub tree that is currently parser positioned on.
-
Field Details
-
XML_URI
- See Also:
-
XMLNS_URI
- See Also:
-
FEATURE_XML_ROUNDTRIP
- See Also:
-
FEATURE_NAMES_INTERNED
- See Also:
-
PROPERTY_XMLDECL_VERSION
- See Also:
-
PROPERTY_XMLDECL_STANDALONE
- See Also:
-
PROPERTY_XMLDECL_CONTENT
- See Also:
-
PROPERTY_LOCATION
- See Also:
-
allStringsInterned
private boolean allStringsInternedImplementation notice: the is instance variable that controls if newString() is interning.NOTE: newStringIntern always returns interned strings and newString MAY return interned String depending on this variable.
NOTE: by default in this minimal implementation it is false!
-
TRACE_SIZING
private static final boolean TRACE_SIZING- See Also:
-
processNamespaces
private boolean processNamespaces -
roundtripSupported
private boolean roundtripSupported -
location
-
lineNumber
private int lineNumber -
columnNumber
private int columnNumber -
seenRoot
private boolean seenRoot -
reachedEnd
private boolean reachedEnd -
eventType
private int eventType -
emptyElementTag
private boolean emptyElementTag -
depth
private int depth -
elRawName
private char[][] elRawName -
elRawNameEnd
private int[] elRawNameEnd -
elRawNameLine
private int[] elRawNameLine -
elName
-
elPrefix
-
elUri
-
elNamespaceCount
private int[] elNamespaceCount -
attributeCount
private int attributeCount -
attributeName
-
attributeNameHash
private int[] attributeNameHash -
attributePrefix
-
attributeUri
-
attributeValue
-
namespaceEnd
private int namespaceEnd -
namespacePrefix
-
namespacePrefixHash
private int[] namespacePrefixHash -
namespaceUri
-
entityEnd
private int entityEnd -
entityName
-
entityNameBuf
private char[][] entityNameBuf -
entityReplacement
-
entityReplacementBuf
private char[][] entityReplacementBuf -
entityNameHash
private int[] entityNameHash -
READ_CHUNK_SIZE
private static final int READ_CHUNK_SIZE- See Also:
-
reader
-
inputEncoding
-
bufLoadFactor
private int bufLoadFactor -
bufferLoadFactor
private float bufferLoadFactor -
buf
private char[] buf -
bufSoftLimit
private int bufSoftLimit -
preventBufferCompaction
private boolean preventBufferCompaction -
bufAbsoluteStart
private int bufAbsoluteStart -
bufStart
private int bufStart -
bufEnd
private int bufEnd -
pos
private int pos -
posStart
private int posStart -
posEnd
private int posEnd -
pc
private char[] pc -
pcStart
private int pcStart -
pcEnd
private int pcEnd -
usePC
private boolean usePC -
seenStartTag
private boolean seenStartTag -
seenEndTag
private boolean seenEndTag -
pastEndTag
private boolean pastEndTag -
seenAmpersand
private boolean seenAmpersand -
seenMarkup
private boolean seenMarkup -
seenDocdecl
private boolean seenDocdecl -
tokenize
private boolean tokenize -
text
-
entityRefName
-
xmlDeclVersion
-
xmlDeclStandalone
-
xmlDeclContent
-
noUnicode4
private static boolean noUnicode4 -
charRefOneCharBuf
private char[] charRefOneCharBuf -
VERSION
private static final char[] VERSION -
NCODING
private static final char[] NCODING -
TANDALONE
private static final char[] TANDALONE -
YES
private static final char[] YES -
NO
private static final char[] NO -
LOOKUP_MAX
private static final int LOOKUP_MAX- See Also:
-
LOOKUP_MAX_CHAR
private static final char LOOKUP_MAX_CHAR- See Also:
-
lookupNameStartChar
private static boolean[] lookupNameStartChar -
lookupNameChar
private static boolean[] lookupNameChar
-
-
Constructor Details
-
MXParser
public MXParser()
-
-
Method Details
-
resetStringCache
private void resetStringCache() -
newString
-
newStringIntern
-
ensureElementsCapacity
private void ensureElementsCapacity()Make sure that we have enough space to keep element stack if passed size. It will always create one additional slot then current depth -
ensureAttributesCapacity
private void ensureAttributesCapacity(int size) Make sure that in attributes temporary array is enough space. -
ensureNamespacesCapacity
private void ensureNamespacesCapacity(int size) -
fastHash
private static final int fastHash(char[] ch, int off, int len) simplistic implementation of hash function that has constant time to compute - so it also means diminishing hash quality for long strings but for XML parsing it should be good enough ... -
ensureEntityCapacity
private void ensureEntityCapacity() -
reset
private void reset() -
setFeature
Method setFeature- Specified by:
setFeature
in interfaceorg.xmlpull.v1.XmlPullParser
- Parameters:
name
- a Stringstate
- a boolean- Throws:
org.xmlpull.v1.XmlPullParserException
-
getFeature
Unknown properties are always returned as false- Specified by:
getFeature
in interfaceorg.xmlpull.v1.XmlPullParser
-
setProperty
- Specified by:
setProperty
in interfaceorg.xmlpull.v1.XmlPullParser
- Throws:
org.xmlpull.v1.XmlPullParserException
-
getProperty
- Specified by:
getProperty
in interfaceorg.xmlpull.v1.XmlPullParser
-
setInput
- Specified by:
setInput
in interfaceorg.xmlpull.v1.XmlPullParser
- Throws:
org.xmlpull.v1.XmlPullParserException
-
setInput
public void setInput(InputStream inputStream, String inputEncoding) throws org.xmlpull.v1.XmlPullParserException - Specified by:
setInput
in interfaceorg.xmlpull.v1.XmlPullParser
- Throws:
org.xmlpull.v1.XmlPullParserException
-
getInputEncoding
- Specified by:
getInputEncoding
in interfaceorg.xmlpull.v1.XmlPullParser
-
defineEntityReplacementText
public void defineEntityReplacementText(String entityName, String replacementText) throws org.xmlpull.v1.XmlPullParserException - Specified by:
defineEntityReplacementText
in interfaceorg.xmlpull.v1.XmlPullParser
- Throws:
org.xmlpull.v1.XmlPullParserException
-
getNamespaceCount
public int getNamespaceCount(int depth) throws org.xmlpull.v1.XmlPullParserException - Specified by:
getNamespaceCount
in interfaceorg.xmlpull.v1.XmlPullParser
- Throws:
org.xmlpull.v1.XmlPullParserException
-
getNamespacePrefix
- Specified by:
getNamespacePrefix
in interfaceorg.xmlpull.v1.XmlPullParser
- Throws:
org.xmlpull.v1.XmlPullParserException
-
getNamespaceUri
- Specified by:
getNamespaceUri
in interfaceorg.xmlpull.v1.XmlPullParser
- Throws:
org.xmlpull.v1.XmlPullParserException
-
getNamespace
- Specified by:
getNamespace
in interfaceorg.xmlpull.v1.XmlPullParser
-
getDepth
public int getDepth()- Specified by:
getDepth
in interfaceorg.xmlpull.v1.XmlPullParser
-
findFragment
private static int findFragment(int bufMinPos, char[] b, int start, int end) -
getPositionDescription
Return string describing current position of parsers as text 'STATE [seen %s...] @line:column'.- Specified by:
getPositionDescription
in interfaceorg.xmlpull.v1.XmlPullParser
-
getLineNumber
public int getLineNumber()- Specified by:
getLineNumber
in interfaceorg.xmlpull.v1.XmlPullParser
-
getColumnNumber
public int getColumnNumber()- Specified by:
getColumnNumber
in interfaceorg.xmlpull.v1.XmlPullParser
-
isWhitespace
public boolean isWhitespace() throws org.xmlpull.v1.XmlPullParserException- Specified by:
isWhitespace
in interfaceorg.xmlpull.v1.XmlPullParser
- Throws:
org.xmlpull.v1.XmlPullParserException
-
getText
- Specified by:
getText
in interfaceorg.xmlpull.v1.XmlPullParser
-
getTextCharacters
public char[] getTextCharacters(int[] holderForStartAndLength) - Specified by:
getTextCharacters
in interfaceorg.xmlpull.v1.XmlPullParser
-
getNamespace
- Specified by:
getNamespace
in interfaceorg.xmlpull.v1.XmlPullParser
-
getName
- Specified by:
getName
in interfaceorg.xmlpull.v1.XmlPullParser
-
getPrefix
- Specified by:
getPrefix
in interfaceorg.xmlpull.v1.XmlPullParser
-
isEmptyElementTag
public boolean isEmptyElementTag() throws org.xmlpull.v1.XmlPullParserException- Specified by:
isEmptyElementTag
in interfaceorg.xmlpull.v1.XmlPullParser
- Throws:
org.xmlpull.v1.XmlPullParserException
-
getAttributeCount
public int getAttributeCount()- Specified by:
getAttributeCount
in interfaceorg.xmlpull.v1.XmlPullParser
-
getAttributeNamespace
- Specified by:
getAttributeNamespace
in interfaceorg.xmlpull.v1.XmlPullParser
-
getAttributeName
- Specified by:
getAttributeName
in interfaceorg.xmlpull.v1.XmlPullParser
-
getAttributePrefix
- Specified by:
getAttributePrefix
in interfaceorg.xmlpull.v1.XmlPullParser
-
getAttributeType
- Specified by:
getAttributeType
in interfaceorg.xmlpull.v1.XmlPullParser
-
isAttributeDefault
public boolean isAttributeDefault(int index) - Specified by:
isAttributeDefault
in interfaceorg.xmlpull.v1.XmlPullParser
-
getAttributeValue
- Specified by:
getAttributeValue
in interfaceorg.xmlpull.v1.XmlPullParser
-
getAttributeValue
- Specified by:
getAttributeValue
in interfaceorg.xmlpull.v1.XmlPullParser
-
getEventType
public int getEventType() throws org.xmlpull.v1.XmlPullParserException- Specified by:
getEventType
in interfaceorg.xmlpull.v1.XmlPullParser
- Throws:
org.xmlpull.v1.XmlPullParserException
-
require
public void require(int type, String namespace, String name) throws org.xmlpull.v1.XmlPullParserException, IOException - Specified by:
require
in interfaceorg.xmlpull.v1.XmlPullParser
- Throws:
org.xmlpull.v1.XmlPullParserException
IOException
-
skipSubTree
Skip sub tree that is currently parser positioned on.
NOTE: parser must be on START_TAG and when function returns parser will be positioned on corresponding END_TAG- Throws:
org.xmlpull.v1.XmlPullParserException
IOException
-
nextText
- Specified by:
nextText
in interfaceorg.xmlpull.v1.XmlPullParser
- Throws:
org.xmlpull.v1.XmlPullParserException
IOException
-
nextTag
- Specified by:
nextTag
in interfaceorg.xmlpull.v1.XmlPullParser
- Throws:
org.xmlpull.v1.XmlPullParserException
IOException
-
next
- Specified by:
next
in interfaceorg.xmlpull.v1.XmlPullParser
- Throws:
org.xmlpull.v1.XmlPullParserException
IOException
-
nextToken
- Specified by:
nextToken
in interfaceorg.xmlpull.v1.XmlPullParser
- Throws:
org.xmlpull.v1.XmlPullParserException
IOException
-
nextImpl
- Throws:
org.xmlpull.v1.XmlPullParserException
IOException
-
parseProlog
- Throws:
org.xmlpull.v1.XmlPullParserException
IOException
-
parseEpilog
- Throws:
org.xmlpull.v1.XmlPullParserException
IOException
-
parseEndTag
- Throws:
org.xmlpull.v1.XmlPullParserException
IOException
-
parseStartTag
- Throws:
org.xmlpull.v1.XmlPullParserException
IOException
-
parseAttribute
- Throws:
org.xmlpull.v1.XmlPullParserException
IOException
-
parseEntityRef
- Throws:
org.xmlpull.v1.XmlPullParserException
IOException
-
lookupEntityReplacement
private char[] lookupEntityReplacement(int entityNameLen) -
parseComment
- Throws:
org.xmlpull.v1.XmlPullParserException
IOException
-
parsePI
- Throws:
org.xmlpull.v1.XmlPullParserException
IOException
-
parseXmlDecl
- Throws:
org.xmlpull.v1.XmlPullParserException
IOException
-
parseXmlDeclWithVersion
private void parseXmlDeclWithVersion(int versionStart, int versionEnd) throws org.xmlpull.v1.XmlPullParserException, IOException - Throws:
org.xmlpull.v1.XmlPullParserException
IOException
-
parseDocdecl
- Throws:
org.xmlpull.v1.XmlPullParserException
IOException
-
parseCDSect
private void parseCDSect(boolean hadCharData) throws org.xmlpull.v1.XmlPullParserException, IOException - Throws:
org.xmlpull.v1.XmlPullParserException
IOException
-
fillBuf
- Throws:
IOException
org.xmlpull.v1.XmlPullParserException
-
more
- Throws:
IOException
org.xmlpull.v1.XmlPullParserException
-
ensurePC
private void ensurePC(int end) -
joinPC
private void joinPC() -
requireInput
private char requireInput(char ch, char[] input) throws org.xmlpull.v1.XmlPullParserException, IOException - Throws:
org.xmlpull.v1.XmlPullParserException
IOException
-
requireNextS
- Throws:
org.xmlpull.v1.XmlPullParserException
IOException
-
skipS
- Throws:
org.xmlpull.v1.XmlPullParserException
IOException
-
setName
private static final void setName(char ch) -
setNameStart
private static final void setNameStart(char ch) -
isNameStartChar
private boolean isNameStartChar(char ch) -
isNameChar
private boolean isNameChar(char ch) -
isS
private boolean isS(char ch) -
printable
-
printable
-