有一个文本数据:
S(#C,A,D)
R(#A,B)
T(E,A)
data
T(e1,e2)
S(c3,a1,d1)
S(c1,a2,d2)
S(c2,a1,d3)
R(a1,b1)
R(a2,b2)输出形式:
<DB>
<R #A="a1" B="b1">
<S #C="c2" D="d3">
</S>
<S #C="c3" D="d1">
</S>
</R>
<R #A="a2" B="b2">
<S #C="c1" D="d2">
</S>
<T E="e1">
</T>
</R>
</DB>说明:S,R,T是表名,#表示主键,C,A,D表示字段,S表中的A是R中的外键,xml形式先输出R的数据库,然后把跟R的主键有关的数据也输出.如
<R #A="a1" B="b1">
<S #C="c2" D="d3">
</S>
<S #C="c3" D="d1">
</S>
</R>要求:编程实现功能,最好用面向对象语言,如java,c#,c++请高手指点思路或写个程序实现,谢谢~
S(#C,A,D)
R(#A,B)
T(E,A)
data
T(e1,e2)
S(c3,a1,d1)
S(c1,a2,d2)
S(c2,a1,d3)
R(a1,b1)
R(a2,b2)输出形式:
<DB>
<R #A="a1" B="b1">
<S #C="c2" D="d3">
</S>
<S #C="c3" D="d1">
</S>
</R>
<R #A="a2" B="b2">
<S #C="c1" D="d2">
</S>
<T E="e1">
</T>
</R>
</DB>说明:S,R,T是表名,#表示主键,C,A,D表示字段,S表中的A是R中的外键,xml形式先输出R的数据库,然后把跟R的主键有关的数据也输出.如
<R #A="a1" B="b1">
<S #C="c2" D="d3">
</S>
<S #C="c3" D="d1">
</S>
</R>要求:编程实现功能,最好用面向对象语言,如java,c#,c++请高手指点思路或写个程序实现,谢谢~
按行读数据,字符串解析,并填充数据
建立外键约束
遍历DataRow dr in DataTableR
由dr.GetChildRows得到相关数据
格式化,然后输出到XML
比如说这三行是表结构的
S(#C,A,D)
R(#A,B)
T(E,A) 读取到列表,得到三个值list[0]="S(#C,A,D) ";list[1]="R(#A,B)) ";String str="S(#C,A,D)";
先用substring(0,str.indexOf("("))//找到左括号得到表名
str=str.substring(str.indexOf("(")+1);//得到#C,A,D)
然后找到)前面的值,得到#C,A,D //当前这个也可以用正则进行split,
string []arr=str.split(",");
//循环处理arr,如果
if(arr[i].substring(0,1)=="#") //代表主键这样一分析表结构不是出来了,
再分析数据部分思路类似