public void LoadXMLToTree(XmlNode xmlNode,Context context)
{
if (xmlNode.IsNull())
return;//判断节点是否为空(递归终止的条件)
else
{
XmlNodeList ChildNodeList = xmlNode.GetChildren(); //取得当前节点的孩子节点集合
int Count = ChildNodeList.GetCount();//获得孩子节点的数量
for(int i=0; i<Count; i++) //对每个子节点递归遍历
{
xmlNode = ChildNodeList.GetItem(i);
startElement(context); //每一个节点调用一次读取函数
LoadXMLToTree(xmlNode,context);
}
}
}
public void startElement(Context context) {
InputStream fIn = null; //读文件流
String result = null; //result 内容存放
try{
fIn = context.openFileInput("test.txt"); //读取文件
int length= fIn.available();//获取文件的字节数
byte [] buffer = new byte[length]; //创建byte数组
fIn.read(buffer); //将文件中的数据读取到byte数组中
result = new String(buffer); //类型转换 byte[]->String
//遍历后条件判断
boolean IsNameStart=false;
boolean IsValueStart=false;
boolean IsValueNameStart=false;
String value = null;
String nodename = null;
String valuename = null;
String NodeValue = null;
for(int i=0;i<buffer.length;i++) //单个byte字节
{
char tmp = (char)buffer[i]; //byte->char
if(tmp=='<')
{
IsNameStart=true;
}
else if(IsNameStart)
{
if(tmp=='>')
{
IsNameStart=false;
IsValueStart=true;
}
else
{
nodename = nodename + tmp;
}
}
if(IsValueStart)
{
//子节点处理
value=value+tmp;
XmlNode xmlNode = new XmlNode(value);
LoadXMLToTree(xmlNode,context);
if(tmp == "</") { //字节的增量每次加2
IsValueNameStart=true;
}
else if(IsValueNameStart) {
if(tmp == '>') {
IsValueNameStart = false;
}
else
{
valuename = valuename + tmp;
if(valuename == nodename )
{
NodeValue = value;
IsValueStart = false;
}
}
}
}
}
}
catch (Exception e) {
e.printStackTrace();
}
finally
{
try {
fIn.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}