科属种XML文档三级树状图浏览的实现
数据库表的结构为三表:科表Family, 属表Genus, 物种表Species
查询生成XML文档的SQL代码:
--两张表链接查询科、属生成XML文件
SELECT Family.FamilyName, Genus.GenusName
FROM Family
JOIN Genus ON Family.FamilyID = Genus.FamilyID
ORDER BY Family.FamilyName, Genus.GenusName
FOR XML AUTO, ROOT('Taxon')
--三张表科、属、种关联查询生成XML文件
SELECT Family.FamilyName,
Genus.GenusName,
Species.AbbreviateName
FROM Family
INNER JOIN Genus ON Family.FamilyID = Genus.FamilyID
INNER JOIN Species ON Genus.GenusID = Species.GenusID
WHERE dbo.Family.FamilyName='Apiaceae'
ORDER BY FamilyName,GenusName,AbbreviateName
FOR XML AUTO,
ROOT('Taxon')
所生成的XML文档示例:
?xml version="1.0" encoding="UTF-8"?>
<Taxon>
<Family FamilyName="Apiaceae">
<Genus GenusName="Acronema">
<Species AbbreviateName="Acronema alpinum" />
<Species AbbreviateName="Acronema astrantiifolium" />
<Species AbbreviateName="Acronema brevipedicellatum" />
<Species AbbreviateName="Acronema chienii" />
<Species AbbreviateName="Acronema chienii var. dissectum" />
<Species AbbreviateName="Acronema chinense" />
<Species AbbreviateName="Acronema chinense var. humile" />
<Species AbbreviateName="Acronema commutatum" />
<Species AbbreviateName="Acronema edosmioides" />
<Species AbbreviateName="Acronema forrestii" />
<Species AbbreviateName="Acronema gracile" />
<Species AbbreviateName="Acronema graminifolium" />
<Species AbbreviateName="Acronema handelii" />
<Species AbbreviateName="Acronema hookeri" />
<Species AbbreviateName="Acronema hookeri var. graminifolium" />
<Species AbbreviateName="Acronema minus" />
<Species AbbreviateName="Acronema muscicola" />
<Species AbbreviateName="Acronema nervosum" />
<Species AbbreviateName="Acronema paniculatum" />
<Species AbbreviateName="Acronema schneideri" />
<Species AbbreviateName="Acronema sichuanense" />
<Species AbbreviateName="Acronema tenerum" />
<Species AbbreviateName="Acronema xizangense" />
<Species AbbreviateName="Acronema yadongense" />
</Genus>
<Genus GenusName="Aegopodium">
<Species AbbreviateName="Aegopodium alpestre" />
<Species AbbreviateName="Aegopodium alpestre f. scabrum" />
<Species AbbreviateName="Aegopodium alpestre f. tenerum" />
<Species AbbreviateName="Aegopodium alpestre f. tenuisectum" />
<Species AbbreviateName="Aegopodium alpestre var. daucifolium" />
<Species AbbreviateName="Aegopodium anthriscoides" />
<Species AbbreviateName="Aegopodium brachycarpum" />
<Species AbbreviateName="Aegopodium handelii" />
<Species AbbreviateName="Aegopodium henryi" />
<Species AbbreviateName="Aegopodium latifolium" />
<Species AbbreviateName="Aegopodium tadshikorum" />
</Genus>
<Genus GenusName="Aethusa">
<Species AbbreviateName="Aethusa leptophylla" />
</Genus>
<Genus GenusName="Albertia">
<Species AbbreviateName="Albertia commutata" />
</Genus>
<Genus GenusName="Ammi">
<Species AbbreviateName="Ammi copticum" />
<Species AbbreviateName="Ammi ehrenbergii" />
<Species AbbreviateName="Ammi majus" />
<Species AbbreviateName="Ammi visnaga" />
</Genus>
<Genus GenusName="Anethum">
<Species AbbreviateName="Anethum foeniculum" />
<Species AbbreviateName="Anethum graveolens" />
<Species AbbreviateName="Anethum graveolens subsp. sowa" />
<Species AbbreviateName="Anethum japonicum" />
<Species AbbreviateName="Anethum pannorium" />
<Species AbbreviateName="Anethum pastinaca" />
<Species AbbreviateName="Anethum sowa" />
</Genus>
......
</Taxon>
执行代码:
1: using System;
2: using System.Web.UI.WebControls;
3: using System.Xml;
4:
5: public partial class Default2 : System.Web.UI.Page
6: {
7: private string xmlFilePath = @"c:\Data\Apiaceae.xml";
8: protected void Page_Load(object sender, EventArgs e)
9: {
10: XmlDocument doc = new XmlDocument();
11: doc.Load(xmlFilePath);
12: TreeNode root = new TreeNode(doc.DocumentElement.Name);
13: TreeView1.Nodes.Add(root);
14: foreach (XmlNode familynode in doc.DocumentElement.ChildNodes)
15: {
16: TreeNode family = new TreeNode("Family: " + familynode.Attributes["FamilyName"].Value + " (" + familynode.ChildNodes.Count.ToString() + ")");
17: root.ChildNodes.Add(family);
18: if (familynode.HasChildNodes)
19: {
20: foreach (XmlNode genusnode in familynode.ChildNodes)
21: {
22: TreeNode n2 = new TreeNode("Genus: " + genusnode.Attributes["GenusName"].Value+" ("+genusnode.ChildNodes.Count.ToString()+")");
23: family.ChildNodes.Add(n2);
24: if (genusnode.HasChildNodes)
25: {
26: foreach (XmlNode speciesnode in genusnode.ChildNodes)
27: {
28: TreeNode n3=new TreeNode("Species: "+speciesnode.Attributes["AbbreviateName"].Value);
29: n2.ChildNodes.Add(n3);
30: }
31: }
32: }
33: }
34: }
35: }
36: }
执行结果:
转载于:https://www.cnblogs.com/apiaceae/archive/2009/04/30/1447075.html
科属种XML文档三级树状图浏览的实现相关推荐
- Java使用POI生成饼状图导出到word文档(饼状图)
本篇文章主要介绍,如何使用Apache POI组件生成饼状图导出到word文档中,具体步骤看下文. 一.实现效果 Java使用POI技术生成饼状图导出到word文档中,最终生成的饼状图如下所示: 二. ...
- html 文档的树状结构图,Word文档如何插入树状结构图?
回答: 1.在"绘图"工具栏上,单击"插入组织结构图或其它图示",如图1所示. 2.在接着出现的"图示库"中选择"用于显示层次关系 ...
- XML——解析XML文档
[0]README 0.1)本文描述 转自 core java volume 2, 旨在理解 XML--解析XML文档 的基础知识: 0.2) for source code, please visi ...
- xml与oracle对比,Oracle XML DB和DB2 pure XML在XML文档存储查询性能方面的比较分析
0引言随着互联网和信息化技术的快速发展,医院在逐步完成医院信息数字化建设过程中,它的核心技术之一就是电子病历的数字化管理和应用.电子病历包括病人就诊或治疗的全部临床信息,这些信息一般由数字.文字.图形 ...
- C#中XmlDocument读取和创建 XML 文档
系列文章目录 C#处理XML 数据的技术方法总结 XmlDocument读取和创建 XML 文档 XmlWriter类提供一种快速非缓存的只进 XML 数据生成方式 XmlReader类提供一种快速非 ...
- 大杂烩 -- 四种生成和解析XML文档的方法详解
基础大杂烩 -- 目录 众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J DOM:在现在的Java JDK里都自带了,在xml-apis.jar包 ...
- XML文档定义有几种方式?它们之间有何本质区别?解析XML文档有哪几种方式?
XML文档定义方式:有两种定义形式,dtd文档类型定义和schema模式 本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的) 普通区别: 1.s ...
- 四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例)
众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml- ...
- XML文档处理(树的应用)
1.问题陈述 设计一个关于XML文档存取的类库,按树的方式处理XML文档,实现对树形文档进行一些基本操作的功能. 2.基本要求 内部要求: XML文档可一次全部读入内存后处理.至少设置文档类.XML元 ...
最新文章
- 【微信小程序之画布】一:canvas组件
- C#实现php的hash_hmac函数
- 我为什么用ES做Redis监控,不用Prometheus或Zabbix?
- php lvs,LVS(四)LVS集群DR模式
- linux下如何使用USB转串口设备
- php组合查询,PHP组合查询多条件查询实例代码第1/2页
- 想成领袖?先瞄准老板身边的位置
- npm以及gulp相关操作
- R语言含中文数据导入的方法
- 【理解】 Error 10053和 Error 10054
- 控制手机 滑动 蓝牙hid_米家LED灯泡蓝牙Mesh版,助你打造温馨的智能家庭
- 当我们谈论深度学习时,我们在谈论什么?
- Caffe学习:使用pycaffe定义网络
- 手把手BC26模组OpenCPU开发之旅-1.简介
- CSS形成圆、平行四边形、菱形、梯形、饼图
- 史上最全超级金融知识(珍藏版)
- 图片在section上下居中_给0~1岁的新媒体人:公众号怎么配图?免费图片哪里找?...
- Tensorflow训练的模型,如何保存与载入?
- [160CRACKME]Chafe.2
- 推特狗狗档案数据集清洗分析及可视化
热门文章
- 以太网交换机MAC地址表格式 IVL和SVL
- el-pagination分页自定义前往第几页样式(下拉框形式)
- 1.WebService
- Python:实现reverse letters反向字母算法(附完整源码)
- 九九乘法表居中c语言,JavaScript实现九九乘法表的简单实例
- 分享几个不错的流程图制作网站
- 有关电脑的英语单词(英汉对照)
- 京东云 linux无法远程,问题解读 | Linux系统SSH无法远程登录时该怎么办?这里有篇小攻...
- Keil出现Error:Flash Download failed - Could not load file
- CG100具体功能介绍