是否可以在查询中使用 Xpath 来使用 XQuery 获取子父关系。如果我使用EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML, '<xmlns:ns="http://some_namespace"/>'
并且之后使用元数据属性,我将收到正确的父子 ID 关系,即
SELECT *
FROM OPENXML(@hDoc,'/ns:root/ns:component/ns:indicator')
WITH(
componentID INT '@mp:parentid',
indicatorID INT '@mp:id',
componentIndicatorType VARCHAR(5) '@sometype') componentIndicators
这行得通,但是如果我要使用 XQuery 是不是没有任何 sp_xml_preparedocument 而是直接访问将 XML 存储在 xml 列中的表,其索引如下
;WITH XMLNAMESPACES (
'http://some_namespace' AS ns )
select
**** --> Here I would like to retrieve a parent -- child relation id
f.i.value(N'@sometype', N'nvarchar(100)') AS sometype
from dbo.xmldatatest AS T
cross apply T.xmldata.nodes('ns:root/ns:component/ns:indicator') as f(i)
那么,当您没有在 xml 中明确地将其作为使用 xquery 的属性时,是否有可能获得这样的节点关系?
其次,当您拥有 GB+ 大小的 xml 文档时,是否有与性能和可伸缩性相关的首选方式(OPENXML/XQuery)?