0

是否可以在查询中使用 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)?

4

0 回答 0