
/**//// <summary>
/// XML解析器
/// </summary>
public class XmlParsers

{

/**//// <summary>
/// 公共解析方法
/// </summary>
/// <param name="nodeList"></param>
/// <param name="treeNode"></param>
/// <param name="table"></param>
public static void Parse(XmlNodeList nodeList, TreeNodeCollection treeNode, Hashtable table)

{
foreach (XmlNode node in nodeList)

{
if (node.NodeType != XmlNodeType.Element)

{
continue;
}

TreeNode newTreeNode = new TreeNode();
newTreeNode.Text = node.Attributes["name"].Value;

//父節(jié)點(diǎn)
if (node.HasChildNodes)

{
Parse(node.ChildNodes, newTreeNode.Nodes, table);
treeNode.Add(newTreeNode);
}
else

{
//子節(jié)點(diǎn)
try

{
//如果存在有id的節(jié)點(diǎn)則加入到table中
//GISNode gNode = new GISNode();
//gNode.Id = node.Attributes["id"].Value;
//gNode.Name = node.Attributes["name"].Value;
//gNode.Area = node.Attributes["area"].Value;
//gNode.Latitude = node.Attributes["latitude"].Value;
//gNode.Longitude = node.Attributes["longitude"].Value;
//table.Add(gNode.Id, gNode);
//treeNode.Add(gNode.Id, gNode.Name);

treeNode.Add(node.Attributes["id"].Value, node.Attributes["name"].Value);
}
catch (Exception ex)

{
//否則丟棄
}

}

}
}


/**//// <summary>
/// 解析設(shè)備樹的方法
/// </summary>
/// <param name="filePath"></param>
/// <param name="tv"></param>
/// <param name="table"></param>
public static void ParseEquipmentXml(string filePath, TreeView tv, Hashtable table)

{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@filePath);

XmlNodeList nodeList = xmlDoc.DocumentElement.ChildNodes;

tv.BeginUpdate();
tv.Nodes.Clear();
Parse(nodeList, tv.Nodes, table);
tv.EndUpdate();
}
}
簡(jiǎn)單實(shí)用,不過如果XML都不相同的話可能要寫多個(gè)函數(shù),后面有時(shí)間重構(gòu)一下,通用一點(diǎn)。
---------------------------------------------------------
專注移動(dòng)開發(fā)
Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
posted on 2008-02-05 02:47
TiGERTiAN 閱讀(944)
評(píng)論(0) 編輯 收藏 所屬分類:
DotNet 、
MapXtreme