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();
}
}
}