我在使用C#中Treeview与解析XML遇到的问题
private void ReadXml(string strFileName)
{
try
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(\"c:/xxx.pdm\");
TreeNode rootNode = new TreeNode(\"PDM原始文档结构\");
trvXML.Nodes.Clear();
this.trv_end.Nodes.Clear();
tn_end2=new TreeNode(\"PDM表结构\");
trv_end.Nodes.Add(tn_end2);
XmlNodeList rootList = xmlDoc.ChildNodes;
foreach(XmlNode xmlnode in rootList)
{
TreeNode tn = new TreeNode(xmlnode.Name);
if (xmlnode.HasChildNodes)
{
rootNode.Nodes.Add(tn);
AnalyseXML(xmlnode, tn);
}
}
this.trvXML.Nodes.Add(rootNode);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void AnalyseXML(XmlNode node, TreeNode tnode)
{
try
{
XmlNodeList xnlAll = node.ChildNodes;
TreeNode tn_end=new TreeNode();
TreeNode tn=new TreeNode();
string strChineseName=\"\";
bool TagFlag=false;
bool TagFlag2=false;
foreach(XmlNode snode in xnlAll)
{
//形成PDM原始文档功能树
if(snode.NodeType==XmlNodeType.Text)
{
tn = new TreeNode(snode.Value+\"[\"+snode.NodeType.ToString()+\"]\");
}
else
{
tn=new TreeNode(snode.Name+\"(\"+snode.NodeType.ToString()+\")\");
}
//形成PDM原始文档功能树完毕
//填充PDM表结构功能树
if(snode.NodeType==XmlNodeType.Element&&snode.ParentNode.Name.Equals(\"o:Table\"))
{
//获取表中文名
if(snode.Name.Equals(\"a:Name\"))
{
strChineseName=snode.FirstChild.Value;
}
//表英文名
if(snode.Name.Equals(\"a:Code\"))
{
tn_end=new TreeNode(strChineseName+\"[\"+snode.FirstChild.Value+\"]\",100,100);
this.trv_end.TopNode.Nodes.Add(tn_end);
this.trv_end.SelectedNode=tn_end;
tn_end2=tn_end;
TagFlag=true;
}
//表说明
if(snode.Name.Equals(\"a:Comment\"))
{
TagFlag2=true;
tn_end.Tag=snode.FirstChild.Value+\"[\"+tn_end.Text.Substring(tn_end.Text.IndexOf(\"[\")+1,tn_end.Text.IndexOf(\"_\")-tn_end.Text.IndexOf(\"[\"));
}
if(TagFlag&&!TagFlag2)
{
tn_end.Tag=\"[\"+tn_end.Text.Substring(tn_end.Text.IndexOf(\"[\")+1,tn_end.Text.IndexOf(\"_\",tn_end.Text.IndexOf(\"[\"))-tn_end.Text.IndexOf(\"[\"));
}
}
//填充PDM表结构功能树完毕
//填充表各列字段
if(snode.ParentNode.Name.Equals(\"o:Column\")&&snode.ParentNode.ParentNode.Name.Equals(\"c:Columns\"))
{
if(snode.Name.Equals(\"a:Name\"))
{
tn_end=new TreeNode(snode.FirstChild.Value,1000,1000);
trv_end.SelectedNode.Nodes.Add(tn_end);
trv_end.SelectedNode=tn_end;
}
//字段英文名
if(snode.Name.Equals(\"a:Code\"))
{
tn_end=new TreeNode(snode.FirstChild.Value);
trv_end.SelectedNode.Nodes.Add(tn_end);
}
//字段描述
if(snode.Name.Equals(\"a:Comment\"))
{
tn_end=new TreeNode(snode.FirstChild.Value);
trv_end.SelectedNode.Nodes.Add(tn_end);
}
//字段类型
if(snode.Name.Equals(\"a:DataType\"))
{
tn_end=new TreeNode(snode.FirstChild.Value);
trv_end.SelectedNode.Nodes.Add(tn_end);
trv_end.SelectedNode=tn_end2;
}
}
//各列字段填充完毕
tnode.Nodes.Add(tn);
if (snode.HasChildNodes)
{
AnalyseXML(snode, tn);
}
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
- 上一篇: 基于XMPP的JABBERD功能特性分析
- 下一篇: 顺序求出c(n,r)的排列组合