已知一个合法的XML文件的内容结构,和她的Schema表述,可否直接转换成对应的表结构?

pukerno3 2003-10-19 06:46:45
XML结构内容比较复杂(多级结构),就是结构性不是很好,如果单个分析,很麻烦,如果有一个工具可以实现自动的功能就好了.请大家给些建设性意见.
...全文
50 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengdali 2003-10-20
  • 打赏
  • 举报
回复
create table InsetXMLtable (
tablename varchar(50) ,
colname varchar(50),
primarykey char(2),
type varchar(10),
length int,
[isnull] char(1),
[default] varchar(100),
descript varchar(500)
)
GO
create proc usp_getXmltable
@xmldoc text
as
set nocount on
Declare @hdoc int
begin
exec sp_xml_preparedocument @hdoc output,@xmldoc
insert into InsetXMLtable
SELECT * FROM OPENXML(@hDoc, '/xmltable/row', 1)
WITH ( tablename varchar(50) '../tablename',
colname varchar(50),
primarykey char(2),
type varchar(10),
length int,
[isnull] char(1),
[default] varchar(100),
descript varchar(500)
)

exec sp_xml_removedocument @hdoc
end
go
declare @xmldoc varchar(2000)
set @xmldoc='
<xmltable>
<tablename>store</tablename>
<row colname="stor_id" primarykey="PK" type="char" length="4" isnull="N" default="" descript=""/>
<row colname="ord_num" primarykey="PK" type="varchar" length="20" isnull="N" default="" descript=""/>
<row colname="ord_date" primarykey="" type="datetime" length="8" isnull="N" default="" descript=""/>
<row colname="qty" primarykey="" type="smallint" length="2" isnull="N" default="" descript=""/>
<row colname="payterms" primarykey="" type="varchar" length="12" isnull="N" default="" descript=""/>
<row colname="title_id" primarykey="PK" type="int" length="6" isnull="N" default="" descript=""/>
</xmltable>'

exec usp_getXmltable @xmldoc
go
pengdali 2003-10-20
  • 打赏
  • 举报
回复
--openxml


DECLARE @idoc int,@doc varchar(8000)

SET @doc ='
<?xml version="1.0" encoding="GB2312"?>
<电子病历>
<病案 num="1">
<姓名>梁景</姓名>
<性别>女</性别>
<出生日期>1985-7-12</出生日期>
<婚姻>已婚</婚姻>
<职业>工人</职业>
</病案>
<病案 num="2">
<姓名>张路</姓名>
<性别>女</性别>
<出生日期>1985-7-12</出生日期>
<婚姻>已婚</婚姻>
<职业>工人</职业>
</病案>
<病案 num="3">
<姓名>何江</姓名>
<性别>男</性别>
<出生日期>1985-7-12</出生日期>
<婚姻>已婚</婚姻>
<职业>工人</职业>
</病案>
</电子病历>
'

EXEC sp_xml_preparedocument @idoc OUTPUT, @doc

SELECT * FROM OPENXML (@idoc, '/电子病历/病案',2)
WITH (姓名 varchar(20)
,性别 varchar(2)
,出生日期 datetime
,婚姻 varchar(10)
,职业 varchar(50)
)
pukerno3 2003-10-20
  • 打赏
  • 举报
回复
感谢:jkljf(萧恨晚);
继续等待大家的意见ING……
jkljf 2003-10-19
  • 打赏
  • 举报
回复
绑你顶一下!




我也不知道, 自己不能看吗? 编写一个程序察看XML的DOM树或者网上下一个, 你看看之后然后手动生成表?我觉得编程生成定义表结构的语句应该不复杂但是关键是如果xml太复杂的话编程不容易啊,关键一点,看xml结构怎么样子的, 你搜索一下工具先!

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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