XMLStreamWriter is used to Write XML streams in XMLStorage. More...

Classes | |
| class | StackEntry |
| StackEntry is used to hold state information when moving between nodes. More... | |
Public Types | |
| enum | PRETTY_FLAGS { PRETTY_PLAIN = 0, PRETTY_LINEFEED = 1, PRETTY_INDENT = 2 } |
Public Member Functions | |
| XMLStreamWriter (TextWriter w) | |
| XMLStreamWriter (string path) | |
| XMLStreamWriter (TextWriter w, PRETTY_FLAGS pretty, XMLHeader header) | |
| XMLStreamWriter (string path, PRETTY_FLAGS pretty, XMLHeader header) | |
| void | close () |
| void | create (string name) |
| create node and move to it | |
| bool | back () |
| go back to previous position | |
| void | put (string attrName, Object value) |
| attribute setting | |
| void | put (string attrName, string value) |
| attribute setting | |
| void | setContent (string s) |
| void | setContent (string s, bool cdata) |
Protected Types | |
| enum | WRITESTATE { NOTHING = 0, ATTRIBUTES = 2, PRE_CLOSED = 3, POST = 5 } |
Protected Member Functions | |
| void | closePre (StackEntry entry) |
| void | writePre (StackEntry entry) |
| void | writeAttributes (StackEntry entry) |
| void | writePost (StackEntry entry) |
Protected Attributes | |
| TextWriter | _out |
| PRETTY_FLAGS | _pretty |
| Stack< StackEntry > | _stack = new Stack<StackEntry>() |
Private Member Functions | |
| void | init (TextWriter w, PRETTY_FLAGS pretty, XMLHeader header) |
XMLStreamWriter is used to Write XML streams in XMLStorage.
Definition at line 49 of file XMLStreamWriter.cs.
Definition at line 52 of file XMLStreamWriter.cs.
{
PRETTY_PLAIN = 0,
PRETTY_LINEFEED = 1,
PRETTY_INDENT = 2
};
enum XMLStorage::XMLStreamWriter::WRITESTATE [protected] |
Definition at line 162 of file XMLStreamWriter.cs.
{
NOTHING = 0,
/*PRE = 1,*/
ATTRIBUTES = 2,
PRE_CLOSED = 3,
/*CONTENT = 4,*/
POST = 5
}
| XMLStorage::XMLStreamWriter::XMLStreamWriter | ( | TextWriter | w ) | [inline] |
Definition at line 58 of file XMLStreamWriter.cs.
References init().
{
init(w, PRETTY_FLAGS.PRETTY_INDENT, new XMLHeader());
}

| XMLStorage::XMLStreamWriter::XMLStreamWriter | ( | string | path ) | [inline] |
Definition at line 63 of file XMLStreamWriter.cs.
References init().
{
init(new StreamWriter(path), PRETTY_FLAGS.PRETTY_INDENT, new XMLHeader());
}

| XMLStorage::XMLStreamWriter::XMLStreamWriter | ( | TextWriter | w, |
| PRETTY_FLAGS | pretty, | ||
| XMLHeader | header | ||
| ) | [inline] |
Definition at line 68 of file XMLStreamWriter.cs.
References init().
{
init(w, pretty, header);
}

| XMLStorage::XMLStreamWriter::XMLStreamWriter | ( | string | path, |
| PRETTY_FLAGS | pretty, | ||
| XMLHeader | header | ||
| ) | [inline] |
Definition at line 73 of file XMLStreamWriter.cs.
References init().
{
init(new StreamWriter(path), pretty, header);
}

| bool XMLStorage::XMLStreamWriter::back | ( | ) | [inline] |
go back to previous position
Definition at line 113 of file XMLStreamWriter.cs.
References _stack, and writePost().
Referenced by WriterTest::testWriter().
{
if (_stack.Count > 0) {
writePost((StackEntry)_stack.Peek());
_stack.Pop();
return true;
} else
return false;
}

| void XMLStorage::XMLStreamWriter::close | ( | ) | [inline] |
Definition at line 86 of file XMLStreamWriter.cs.
References _out.
Referenced by WriterTest::testWriter().
| void XMLStorage::XMLStreamWriter::closePre | ( | StackEntry | entry ) | [inline, protected] |
Definition at line 196 of file XMLStreamWriter.cs.
References _out, and XMLStorage::XMLStreamWriter::StackEntry::_state.
Referenced by create(), and writePost().
{
_out.Write('>');
entry._state = WRITESTATE.PRE_CLOSED;
}
| void XMLStorage::XMLStreamWriter::create | ( | string | name ) | [inline] |
create node and move to it
Definition at line 93 of file XMLStreamWriter.cs.
References XMLStorage::XMLStreamWriter::StackEntry::_children, _stack, XMLStorage::XMLStreamWriter::StackEntry::_state, closePre(), writeAttributes(), and writePre().
Referenced by WriterTest::testWriter().
{
if (_stack.Count > 0) {
StackEntry last = (StackEntry) _stack.Peek();
if (last._state < WRITESTATE.PRE_CLOSED) {
writeAttributes(last);
closePre(last);
}
last._children = true;
}
StackEntry entry = new StackEntry(name);
_stack.Push(entry);
writePre(entry);
}

| void XMLStorage::XMLStreamWriter::init | ( | TextWriter | w, |
| PRETTY_FLAGS | pretty, | ||
| XMLHeader | header | ||
| ) | [inline, private] |
Definition at line 78 of file XMLStreamWriter.cs.
References _out, _pretty, and XMLStorage::XMLHeader::print().
Referenced by XMLStreamWriter().

| void XMLStorage::XMLStreamWriter::put | ( | string | attrName, |
| Object | value | ||
| ) | [inline] |
attribute setting
Definition at line 126 of file XMLStreamWriter.cs.
References _stack.
Referenced by WriterTest::testWriter().
| void XMLStorage::XMLStreamWriter::put | ( | string | attrName, |
| string | value | ||
| ) | [inline] |
| void XMLStorage::XMLStreamWriter::setContent | ( | string | s, |
| bool | cdata | ||
| ) | [inline] |
Definition at line 156 of file XMLStreamWriter.cs.
References _stack, and XMLStorage::XMLHelper::encodeXMLString().
{
if (_stack.Count > 0)
((StackEntry)_stack.Peek())._content = s!=null? XMLHelper.encodeXMLString(s, cdata): "";
}

| void XMLStorage::XMLStreamWriter::setContent | ( | string | s ) | [inline] |
Definition at line 151 of file XMLStreamWriter.cs.
Referenced by WriterTest::testWriter().
{
setContent(s, false);
}
| void XMLStorage::XMLStreamWriter::writeAttributes | ( | StackEntry | entry ) | [inline, protected] |
Definition at line 216 of file XMLStreamWriter.cs.
References _out, and XMLStorage::XMLHelper::encodeXMLString().
Referenced by create(), and writePost().
{
foreach(KeyValuePair<string, string> it in entry._attributes)
_out.Write(" " + XMLHelper.encodeXMLString(it.Key) +
"=\"" + XMLHelper.encodeXMLString(it.Value) + "\"");
entry._state = WRITESTATE.ATTRIBUTES;
}

| void XMLStorage::XMLStreamWriter::writePost | ( | StackEntry | entry ) | [inline, protected] |
Definition at line 225 of file XMLStreamWriter.cs.
References XMLStorage::XMLStreamWriter::StackEntry::_children, XMLStorage::XMLStreamWriter::StackEntry::_content, XMLStorage::XMLStreamWriter::StackEntry::_nodeName, _out, _pretty, _stack, XMLStorage::XMLStreamWriter::StackEntry::_state, closePre(), XMLStorage::XMLHelper::encodeXMLString(), writeAttributes(), and XMLStorage::XMLNode::XML_INDENT_SPACE.
Referenced by back().
{
if (entry._state < WRITESTATE.ATTRIBUTES)
writeAttributes(entry);
if (entry._children || entry._content.Length>0) {
if (entry._state < WRITESTATE.PRE_CLOSED)
closePre(entry);
_out.Write(entry._content);
//entry._state = WRITESTATE.CONTENT;
if (_pretty>=PRETTY_FLAGS.PRETTY_LINEFEED && entry._content.Length==0)
_out.Write('\n');
if (_pretty==PRETTY_FLAGS.PRETTY_INDENT && entry._content.Length==0)
for(int i=_stack.Count; --i>0; )
_out.Write(XMLNode.XML_INDENT_SPACE);
_out.Write("</" + XMLHelper.encodeXMLString(entry._nodeName) + ">");
} else {
_out.Write("/>");
}
entry._state = WRITESTATE.POST;
}

| void XMLStorage::XMLStreamWriter::writePre | ( | StackEntry | entry ) | [inline, protected] |
Definition at line 203 of file XMLStreamWriter.cs.
References XMLStorage::XMLStreamWriter::StackEntry::_nodeName, _out, _pretty, _stack, XMLStorage::XMLHelper::encodeXMLString(), and XMLStorage::XMLNode::XML_INDENT_SPACE.
Referenced by create().
{
if (_pretty >= PRETTY_FLAGS.PRETTY_LINEFEED)
_out.Write('\n');
if (_pretty == PRETTY_FLAGS.PRETTY_INDENT)
for(int i=_stack.Count; --i>0; )
_out.Write(XMLNode.XML_INDENT_SPACE);
_out.Write("<" + XMLHelper.encodeXMLString(entry._nodeName));
//entry._state = WRITESTATE.PRE;
}

TextWriter XMLStorage::XMLStreamWriter::_out [protected] |
Definition at line 171 of file XMLStreamWriter.cs.
Referenced by close(), closePre(), init(), writeAttributes(), writePost(), and writePre().
PRETTY_FLAGS XMLStorage::XMLStreamWriter::_pretty [protected] |
Definition at line 172 of file XMLStreamWriter.cs.
Referenced by init(), writePost(), and writePre().
Stack<StackEntry> XMLStorage::XMLStreamWriter::_stack = new Stack<StackEntry>() [protected] |
Definition at line 192 of file XMLStreamWriter.cs.
Referenced by back(), create(), put(), setContent(), writePost(), and writePre().
1.7.2