Sql操作带命名空间的xml
之前一直操作的xml是没有namespace的。这种xml使用XPath来查询是非常方便的。而当xml中某一个节点定义了namespace,那么之前常用的方法就查询不出来数据了,因此需要在节点前面加上前缀,如下:
DECLARE @xml XML SET @xml=N' <Project xmlns="http://www.neweggtest.com"> <Subject xmlns="http://www.neweggtest/mytest.com"> <Node name="node1"> <title>T11</title> <title>T12</title> </Node> <Node name="node2" xmls=""> <title>T21</title> <title>T22</title> </Node> </Subject> </Project>' ;WITH XMLNAMESPACES( 'http://www.neweggtest.com' AS xnp, 'http://www.neweggtest/mytest.com' AS xn ) SELECT T.[C].value('(../@name)[1]','VARCHAR(20)') AS Name, T.[C].value('(.)[1]','VARCHAR(20)') AS Title FROM @xml.nodes('/xnp:Project/xn:Subject/xn:Node/xn:title') AS T([C])
/********************************/
所有文章内容均属本人自己在日常的工作和学习过程中总结出的一些帮助自己学习和进步的知识点,难免会有不足之处。
仅供参考,如有疑问,谨请联系。
/*******************************/