将xml文件存入到text字段中,读取时希望能将转换为xml

椅子 2004-09-01 04:31:41
目的就是:希望能在字段中执行xpath查询。
如果大家有用过oracle9i,可以很明白这个意思,无非是想执行下列查询:
select id,EXTRACT(xmldom, '/processmap/step[@name='b']') from table1

例如:
table1中的记录
id xmldom
1 <step name="a"><step name="b">
2 <setp name="a"><step name="c">

在xdr架构上,把attribute,element 分别映射到id和xmldom列上,可是执行完xpath查询后,返回的是:
/*
<Employee aid="200400002"><PROCESSMAP><case id="1" flag="1">魏伟</case><case id="2" flag="2">椅子</case><case id="3" flag="4">板凳</case><case id="4" flag="1">桌子</case></PROCESSMAP></Employee>
*/

就是说我希望xmldom字段返回的值能作为element输出,而不是现在这样。

...全文
364 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
椅子 2004-09-24
  • 打赏
  • 举报
回复
哎,最后我还是放弃了这个方案,因为考虑到大数据量,如果不能直接在sql语句里xpath查询,就得一条条记录生成xml然后查询。
椅子 2004-09-04
  • 打赏
  • 举报
回复
很感谢各位答复,问题已经解决了。
回头我整理出来,去xml板块开新贴。
netcoder 2004-09-03
  • 打赏
  • 举报
回复
不太明白楼主的意图

是在应用程序里处理的吗?如果是,那得到xml数据之后,不是任由你处理的吗?
椅子 2004-09-03
  • 打赏
  • 举报
回复
配置完iis的sql xml支持后,我做了以下两个测试:
http://localhost/demos?

sql=select+'<root>';+select+processmap+from+table1+where+id+=3;select+'</root>'
^
sql=select+'<root>';+select+processmap+from+table1+where+id+>3;select+'</root>'
^

processmap字段内容是"<part>1</part>"
如果返回记录是一条,也就是id=3,可以将processmap中的内容认为是xml节点,
但如果返回记录是多条,则出现没有错误描述的错误。
netcoder 2004-09-03
  • 打赏
  • 举报
回复
在SQL Server2000对xml的支持比较弱,暂时不能满足你的处理要求

如果在应用程序处理,完全不成问题了

SQL Server 2005里面已经有了xml数据类型,不知道你等得到等不到
椅子 2004-09-03
  • 打赏
  • 举报
回复
意图就是:在sql语句里xpath查询,或返回xml后xpath查询,但是其中一个text类型字段放的是xml节点内容,希望该节点能进入返回的xml,从而实现对text字段的xpath查询
椅子 2004-09-02
  • 打赏
  • 举报
回复
我配置了iis的sql xml支持,不是简单的处理字符串。
返回结果是看xml源代码得到的,不是在sql语句中处理。
“http://localhost/demos/s/nwind.xdr/Employee[@aid=200400002]”
再想了一下,就是在xdr架构中,能否把记录中的内容不作为文本而作为节点显示。
zjcxc 2004-09-01
  • 打赏
  • 举报
回复
--真的不明白,如果是按上面的,那不就是几个替换的问题吗?

--要处理的字符串
declare @s varchar(8000)
set @s='<Employee aid="200400002"><PROCESSMAP><case id="1" flag="1">魏伟</case><case id="2" flag="2">椅子</case><case id="3" flag="4">板凳</case><case id="4" flag="1">桌子</case></PROCESSMAP></Employee>'

--替换处理:
select replace(replace(replace(@s,'<','<'),'>','>'),'"','"')

/*--结果

<Employee aid="200400002"><PROCESSMAP><case id="1" flag="1">魏伟</case><case id="2" flag="2">椅子</case><case id="3" flag="4">板凳</case><case id="4" flag="1">桌子</case></PROCESSMAP></Employee>
--*/
椅子 2004-09-01
  • 打赏
  • 举报
回复
/*
<Employee aid="200400002"><PROCESSMAP><case id="1" flag="1">魏伟</case><case id="2" flag="2">椅子</case><case id="3" flag="4">板凳</case><case id="4" flag="1">桌子</case></PROCESSMAP></Employee>
*/

怎样返回成
/*
<Employee aid="200400002"><PROCESSMAP><case id="1" flag="1">魏伟</case><case id="2" flag="2">椅子</case><case id="3" flag="4">板凳</case><case id="4" flag="1">桌子</case></PROCESSMAP></Employee>
*/
zjcxc 2004-09-01
  • 打赏
  • 举报
回复
没看明白.

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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