有關生成XML文檔的難題

zilang 2003-10-17 03:43:11
數據表﹕
STYLE_NO || STYLE_NAME|| PART_NO || PART_NAME
型體編號 型體名稱 部位編號 部位名稱

要格式化成下面樣子的一棵樹型結構.點擊部位名稱﹐向另外一個葉面傳遞STYLE_NO和PART_NO值。逼得很僅﹐有誰遇到過這樣得問題不吝賜教﹗﹗﹗在線等待。
型體1
部位1
部位2
.....
型體2
部位1
部位2
.....

...全文
27 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zilang 2003-10-28
  • 打赏
  • 举报
回复
經過几番毛悶﹐自己解決了﹐用treeview,其實格式化成xml同理也好解決﹔源代碼來出來給大家看看﹐有沒有更好的方法。

OracleDataReader oReader1,oReader2,oReader3;

string SqlSTring1=" SELECT DISTINCT S.STYLE_NO,S.STYLE_NAME FROM STYLEM S,SMALLM SM WHERE SM.STYLE_NO=S.STYLE_NO ";
oReader1=IDAT.ORA.GetReader(SqlSTring1);
while(oReader1.Read())
{ //add first node
TreeNode oNode1=new TreeNode();
oNode1.ID=oReader1["STYLE_NO"].ToString();
oNode1.Text=oReader1["STYLE_NAME"].ToString();
TreeView1.Nodes.Add(oNode1);

string SqlString2=" SELECT DISTINCT P.PART_NO,P.PART_NAME FROM PARTM P,SMALLM S WHERE P.PART_NO=S.PART_NO AND S.STYLE_NO='"+oReader1["STYLE_NO"]+"' ";
oReader2=IDAT.ORA.GetReader(SqlString2);
while(oReader2.Read())
{ //add second node
TreeNode oNode2=new TreeNode();
oNode2.ID=oReader2["PART_NO"].ToString();
oNode2.Text=oReader2["PART_NAME"].ToString();
oNode1.Nodes.Add(oNode2);

string SqlSTring3=" SELECT DISTINCT C.COLOR_NAME, C.COLOR_NO FROM COLORM C,SMALLM SM WHERE SM.PART_COLOR=C.COLOR_NO AND SM.STYLE_NO='"+oReader1["STYLE_NO"]+"' AND SM.PART_NO='"+oReader2["PART_NO"]+"' ";
oReader3=IDAT.ORA.GetReader(SqlSTring3);
while(oReader3.Read())
{ //add third node
TreeNode oNode3=new TreeNode();
oNode3.ID=oReader3["COLOR_NO"].ToString();
oNode3.Text=oReader3["COLOR_NAME"].ToString();
oNode3.NavigateUrl="SmalMatFomula.aspx?style_no="+oNode1.ID+"&part_no="+oNode2.ID+"&part_color="+oNode3.ID+" ";
oNode3.Target="main";
oNode2.Nodes.Add(oNode3);
}
oReader3.Close();
}
oReader2.Close();
}
oReader1.Close();
注釋﹕
IDAT是我自己寫的一個查詢組件﹐支持sqlserver,oracle,oledb,procedure﹐procedure還支持傳入和傳出參數﹐可以返回reader或者table﹐很小但很方便。
zilang 2003-10-21
  • 打赏
  • 举报
回复
各位都這么泛泛而談﹐說了也等于白說呀。
把關鍵性代碼或者算法寫出來看看呀。
阿拉丁 2003-10-20
  • 打赏
  • 举报
回复
DataSet.WriteXML()完全可以,如果你熟悉DataTable及其Column的创建,很简单。
你可以参看MSDN中DataTable的相关帮助!
DataSet.WriteXml Method :ms-help://MS.VSCC/MS.MSDNVS/cpref/html/frlrfSystemDataDataSetClassWriteXmlTopic.htm

Creating a DataTable in DataSet:
ms-help://MS.VSCC/MS.MSDNVS/cpguide/html/cpconcreatingdatatable.htm

private void CreateTable(DataSet ds)
{
DataTable newTable = new DataTable("MyTable");
newTable.Columns.Add("ID", typeof(int));
newTable.Columns.Add("Name", typeof(string));
ds.Tables.Add(newTable);
}
elite2018 2003-10-18
  • 打赏
  • 举报
回复
use xsd Shema to do that
zilang 2003-10-18
  • 打赏
  • 举报
回复
各位再幫我想想﹐大家可能還沒有理解我的意思 。

用treeview要知道每個節點的父節點才好辦﹐而這個表沒有為他設計父節﹐沒有ParentID欄位,表中每條記錄都是平等的﹐只是人為的要將型體編號相同的放在一起﹐也就是說不能用filter="STYLE_NO=XX"﹔因為STYLE_NO并沒有什么特征﹐只能用SELECT ...ORDER BY STYLE_NO將STYLE_NO相同的記錄依次輸出,所以我無法用treeview.

在dataset里能夠做到這樣嗎﹖
型體編號1 型體名稱1 部位編號 部位名稱
型體編號1 型體名稱1 部位編號 部位名稱
型體編號1 型體名稱1 部位編號 部位名稱
型體編號2 型體名稱2 部位編號 部位名稱
型體編號2 型體名稱2 部位編號 部位名稱
將其格式化為這樣的xml嗎﹕
<型體編號1>
型體名稱1 部位編號 部位名稱
<型體編號1> 型體名稱1 部位編號 部位名稱></型體編號1>
<型體編號1> 型體名稱1 部位編號 部位名稱></型體編號1>
</型體編號1>
<型體編號2>
型體名稱2 部位編號 部位名稱
<型體編號2> 型體名稱2 部位編號 部位名稱</型體編號2>
</型體編號2>


孟子E章 2003-10-18
  • 打赏
  • 举报
回复
用TreeView
skyover 2003-10-18
  • 打赏
  • 举报
回复
楼上说的很对。先用Dataset格式化你的数据,最后用Dataset.WriteXML()就可以保存你的XML文件了。不过这样默认的是用字段名做XMLFile的节点名。
如果不喜欢这样的话就要自己动手改了。手工生成xmlstr,再用Fileinfo写入。
阿拉丁 2003-10-18
  • 打赏
  • 举报
回复
use dataset to format your data first,
then use DataSet.WriteXML() to save dataset as XML file

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧