XMLDocReader is the XML file reader of XMLStorage. More...


Public Member Functions | |
| void | startElement (String uri, String localName, String qName, Attributes attributes) throws SAXException |
| void | endElement (String uri, String localName, String qName) throws SAXException |
| void | characters (char[] ch, int start, int length) throws SAXException |
| void | startCDATA () throws SAXException |
| void | endCDATA () throws SAXException |
| void | processingInstruction (String target, String data) throws SAXException |
| String | getInstructions () |
Package Functions | |
| XMLDocReader (XMLNode node) throws ParserConfigurationException, SAXException | |
| void | read (InputSource source) throws SAXException, IOException |
| read XML stream into XML tree below _pos | |
Private Attributes | |
| XMLPos | _pos |
| SAXParser | _parser |
| String | _content = "" |
| StringBuffer | _instructions = new StringBuffer() |
| int | _lastTag |
| boolean | _inCDATASection = false |
| boolean | _isContentCDATA = false |
Static Private Attributes | |
| static final int | TAG_NONE = 0 |
| static final int | TAG_START = 1 |
| static final int | TAG_END = 2 |
XMLDocReader is the XML file reader of XMLStorage.
Definition at line 56 of file XMLDocReader.java.
| de.mfuchs.xmlstorage.XMLDocReader.XMLDocReader | ( | XMLNode | node ) | throws ParserConfigurationException, SAXException [package] |
Definition at line 58 of file XMLDocReader.java.
References de.mfuchs.xmlstorage.XMLDocReader._lastTag, de.mfuchs.xmlstorage.XMLDocReader._parser, de.mfuchs.xmlstorage.XMLDocReader._pos, and de.mfuchs.xmlstorage.XMLDocReader.TAG_NONE.
| void de.mfuchs.xmlstorage.XMLDocReader.characters | ( | char[] | ch, |
| int | start, | ||
| int | length | ||
| ) | throws SAXException |
Definition at line 176 of file XMLDocReader.java.
References de.mfuchs.xmlstorage.XMLDocReader._content, de.mfuchs.xmlstorage.XMLDocReader._inCDATASection, de.mfuchs.xmlstorage.XMLDocReader._isContentCDATA, and de.mfuchs.xmlstorage.XMLHelper.encodeXMLString().
{
// encode _content compatible to XMLNode.setContent()
_content += XMLHelper.encodeXMLString(new String(ch, start, length));
if (_inCDATASection)
_isContentCDATA = true;
}

| void de.mfuchs.xmlstorage.XMLDocReader.endCDATA | ( | ) | throws SAXException |
Definition at line 196 of file XMLDocReader.java.
References de.mfuchs.xmlstorage.XMLDocReader._inCDATASection.
{
_inCDATASection = false;
}
| void de.mfuchs.xmlstorage.XMLDocReader.endElement | ( | String | uri, |
| String | localName, | ||
| String | qName | ||
| ) | throws SAXException |
Definition at line 141 of file XMLDocReader.java.
References de.mfuchs.xmlstorage.XMLNode._children, de.mfuchs.xmlstorage.XMLNode._content, de.mfuchs.xmlstorage.XMLDocReader._content, de.mfuchs.xmlstorage.XMLNode._endLeading, de.mfuchs.xmlstorage.XMLDocReader._isContentCDATA, de.mfuchs.xmlstorage.XMLDocReader._lastTag, de.mfuchs.xmlstorage.XMLDocReader._pos, de.mfuchs.xmlstorage.XMLPos.back(), de.mfuchs.xmlstorage.XMLPos.cur(), de.mfuchs.xmlstorage.XMLDocReader.TAG_END, and de.mfuchs.xmlstorage.XMLDocReader.TAG_START.
{
int i;
if (_isContentCDATA)
i = _content.length();
else {
// search for content end leaving only whitespaces for leading
i = _content.length();
for (; i>0; i--) {
char ch = _content.charAt(i-1);
if (!Character.isWhitespace(ch))
break;
}
}
if (i > 0)
if (_pos.cur()._children.isEmpty()) // no children in current node?
_pos.cur()._content += _content.substring(0, i);
else
if (_lastTag == TAG_START)
_pos.cur()._content += _content.substring(0, i);
else
_pos.cur()._children.getLast()._trailing += _content.substring(0, i);
if (i < _content.length())
_pos.cur()._endLeading = _content.substring(i);
_pos.back();
_lastTag = TAG_END;
_content = "";
_isContentCDATA = false;
}

| String de.mfuchs.xmlstorage.XMLDocReader.getInstructions | ( | ) |
Definition at line 209 of file XMLDocReader.java.
References de.mfuchs.xmlstorage.XMLDocReader._instructions.
Referenced by de.mfuchs.xmlstorage.XMLDoc.read().
{
return _instructions.toString();
}
| void de.mfuchs.xmlstorage.XMLDocReader.processingInstruction | ( | String | target, |
| String | data | ||
| ) | throws SAXException |
Definition at line 202 of file XMLDocReader.java.
References de.mfuchs.xmlstorage.XMLDocReader._instructions.
{
_instructions.append("<?").append(target)
.append(" ").append(data).append("?>");
}
| void de.mfuchs.xmlstorage.XMLDocReader.read | ( | InputSource | source ) | throws SAXException, IOException [package] |
read XML stream into XML tree below _pos
Definition at line 71 of file XMLDocReader.java.
References de.mfuchs.xmlstorage.XMLNode._children, de.mfuchs.xmlstorage.XMLDocReader._content, de.mfuchs.xmlstorage.XMLDocReader._isContentCDATA, de.mfuchs.xmlstorage.XMLDocReader._parser, de.mfuchs.xmlstorage.XMLDocReader._pos, de.mfuchs.xmlstorage.XMLNode._trailing, and de.mfuchs.xmlstorage.XMLPos.cur().
Referenced by de.mfuchs.xmlstorage.XMLDoc.read().
{
// read XML data
_parser.parse(source, this);
// process last data pieces
if (_pos.cur()._children.isEmpty())
_pos.cur()._trailing += _content;
else
_pos.cur()._children.getLast()._trailing += _content;
_content = "";
_isContentCDATA = false;
}

| void de.mfuchs.xmlstorage.XMLDocReader.startCDATA | ( | ) | throws SAXException |
Definition at line 191 of file XMLDocReader.java.
References de.mfuchs.xmlstorage.XMLDocReader._inCDATASection.
{
_inCDATASection = true;
}
| void de.mfuchs.xmlstorage.XMLDocReader.startElement | ( | String | uri, |
| String | localName, | ||
| String | qName, | ||
| Attributes | attributes | ||
| ) | throws SAXException |
Definition at line 98 of file XMLDocReader.java.
References de.mfuchs.xmlstorage.XMLNode._attributes, de.mfuchs.xmlstorage.XMLNode._children, de.mfuchs.xmlstorage.XMLNode._content, de.mfuchs.xmlstorage.XMLDocReader._content, de.mfuchs.xmlstorage.XMLDocReader._isContentCDATA, de.mfuchs.xmlstorage.XMLDocReader._lastTag, de.mfuchs.xmlstorage.XMLDocReader._pos, de.mfuchs.xmlstorage.XMLNode._trailing, de.mfuchs.xmlstorage.XMLPos.addDown(), de.mfuchs.xmlstorage.XMLPos.cur(), de.mfuchs.xmlstorage.XMLDocReader.TAG_END, and de.mfuchs.xmlstorage.XMLDocReader.TAG_START.
{
// search for content end leaving only whitespaces for _end_leading
int i = _content.length();
for (; i>0; i--) {
char ch = _content.charAt(i-1);
if (!Character.isWhitespace(ch))
break;
}
if (i > 0)
if (_pos.cur()._children.isEmpty()) { // no children in last node?
if (_lastTag == TAG_START)
_pos.cur()._content += _content.substring(0, i);
else if (_lastTag == TAG_END)
_pos.cur()._trailing += _content.substring(0, i);
// else TAG_NONE -> don't store white space in root node
} else
_pos.cur()._children.getLast()._trailing += _content.substring(0, i);
String leading = "";
if (i < _content.length())
leading = _content.substring(i);
XMLNode node = new XMLNode(qName, leading);
//XMLNode node = new XMLNode(XMLHelper.String_from_XML_Char(qName), leading);
_pos.addDown(node);
for(int n=0; n<attributes.getLength(); ++n) {
final String attrName = attributes.getQName(n);
final String attrValue = attributes.getValue(n);
node._attributes.put(attrName, attrValue);
//node.put(XMLHelper.String_from_XML_Char(attrName), XMLHelper.String_from_XML_Char(attr_value));
}
_lastTag = TAG_START;
_content = "";
_isContentCDATA = false;
}

String de.mfuchs.xmlstorage.XMLDocReader._content = "" [private] |
Definition at line 89 of file XMLDocReader.java.
Referenced by de.mfuchs.xmlstorage.XMLDocReader.characters(), de.mfuchs.xmlstorage.XMLDocReader.endElement(), de.mfuchs.xmlstorage.XMLDocReader.read(), and de.mfuchs.xmlstorage.XMLDocReader.startElement().
boolean de.mfuchs.xmlstorage.XMLDocReader._inCDATASection = false [private] |
Definition at line 188 of file XMLDocReader.java.
Referenced by de.mfuchs.xmlstorage.XMLDocReader.characters(), de.mfuchs.xmlstorage.XMLDocReader.endCDATA(), and de.mfuchs.xmlstorage.XMLDocReader.startCDATA().
StringBuffer de.mfuchs.xmlstorage.XMLDocReader._instructions = new StringBuffer() [private] |
Definition at line 90 of file XMLDocReader.java.
Referenced by de.mfuchs.xmlstorage.XMLDocReader.getInstructions(), and de.mfuchs.xmlstorage.XMLDocReader.processingInstruction().
boolean de.mfuchs.xmlstorage.XMLDocReader._isContentCDATA = false [private] |
Definition at line 189 of file XMLDocReader.java.
Referenced by de.mfuchs.xmlstorage.XMLDocReader.characters(), de.mfuchs.xmlstorage.XMLDocReader.endElement(), de.mfuchs.xmlstorage.XMLDocReader.read(), and de.mfuchs.xmlstorage.XMLDocReader.startElement().
int de.mfuchs.xmlstorage.XMLDocReader._lastTag [private] |
Definition at line 95 of file XMLDocReader.java.
Referenced by de.mfuchs.xmlstorage.XMLDocReader.endElement(), de.mfuchs.xmlstorage.XMLDocReader.startElement(), and de.mfuchs.xmlstorage.XMLDocReader.XMLDocReader().
SAXParser de.mfuchs.xmlstorage.XMLDocReader._parser [private] |
Definition at line 87 of file XMLDocReader.java.
Referenced by de.mfuchs.xmlstorage.XMLDocReader.read(), and de.mfuchs.xmlstorage.XMLDocReader.XMLDocReader().
XMLPos de.mfuchs.xmlstorage.XMLDocReader._pos [private] |
Definition at line 86 of file XMLDocReader.java.
Referenced by de.mfuchs.xmlstorage.XMLDocReader.endElement(), de.mfuchs.xmlstorage.XMLDocReader.read(), de.mfuchs.xmlstorage.XMLDocReader.startElement(), and de.mfuchs.xmlstorage.XMLDocReader.XMLDocReader().
final int de.mfuchs.xmlstorage.XMLDocReader.TAG_END = 2 [static, private] |
Definition at line 94 of file XMLDocReader.java.
Referenced by de.mfuchs.xmlstorage.XMLDocReader.endElement(), and de.mfuchs.xmlstorage.XMLDocReader.startElement().
final int de.mfuchs.xmlstorage.XMLDocReader.TAG_NONE = 0 [static, private] |
Definition at line 92 of file XMLDocReader.java.
Referenced by de.mfuchs.xmlstorage.XMLDocReader.XMLDocReader().
final int de.mfuchs.xmlstorage.XMLDocReader.TAG_START = 1 [static, private] |
Definition at line 93 of file XMLDocReader.java.
Referenced by de.mfuchs.xmlstorage.XMLDocReader.endElement(), and de.mfuchs.xmlstorage.XMLDocReader.startElement().
1.7.2