if(reader.eof||reader.nodetype!=xmlnodetype.element)
return;
this._tag=reader.localname;
this._prefix=reader.prefix;
this._namespaceuri=reader.namespaceuri;
this._xmllang=reader.xmllang;
//this._xmlspace=reader.xmlspace;
this._baseuri=reader.baseuri;
//this._nametable=reader.nametable;
int depth=reader.depth;
bool isempty=reader.isemptyelement;
if(reader.hasattributes)
{
int n=reader.attributecount;
for(int i=0;i<n;i++)
{
reader.movetoattribute(i);
addattribute(reader.name,reader.value);
}
}
if(isempty)
return;
//读取所有内部xml元素
while(reader.read())
{
switch(reader.nodetype)
{
case xmlnodetype.endelement:
if((reader.depth==depth)&&(reader.name==tag))
return;
break;
case xmlnodetype.element:
if(reader.depth==depth+1)
addelement(new baseserializeelement(reader));
break;
case xmlnodetype.text:
if(reader.depth==depth+1)
_value=reader.value;
break;
case xmlnodetype.cdata:
if(reader.depth==depth+1)
_cdata=reader.value;
break;
}
}
}
#endregion
private void print(string format,params object[] args)
{
console.writeline(format,args);
}
}
}
tester
----------------------
using system;
using system.io;
using system.xml;
using localpostbb.framework.common;
namespace localpostbb
{
/// <summary>
/// class1 的摘要说明。
/// </summary>
class tester
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[stathread]
static void main(string[] args)
{
tester tester=new tester();
tester.testserialize();
console.readline();
}
public void testserialize()
{
baseserializeelement t=null;
string filename=@"e:\program files\altova\xmlspy2005\examples\orgchartdebug.xslt";
xmltextreader reader=new xmltextreader(filename);
t=new baseserializeelement(reader,true);
reader.close();
stringwriter wr=new stringwriter();
xmltextwriter writer=new xmltextwriter(wr);
writer.formatting=formatting.indented;
t.wirtexmlroot(writer);
console.writeline(wr.tostring());
writer.close();
console.writeline("successful!");
}
}
}
------------------