近日我在用c#将pdm中相关内容导入到treeview的过程中,遇到一个很奇怪的问题,请各位大虾指点,谢谢! private void readxml(string strfilename) private void analysexml(xmlnode node, treenode tnode)
{
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);
}
}
{
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);
}
}
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器