我有想要分解的XML。我正在尝试交叉应用,只使用xsi:type ReferenceNode的QueryNode,但我不知道如何将.nodes限制为仅使用xsi:type。这是我的XML
<QueryNode xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="TableNode">
<ChildNodes>
<QueryNode xsi:type="ReferenceNode">
</QueryNode>
</ChildNodes>
</QueryNode>
到目前为止,我的问题是:
SELECT acode, x.l.value('.', 'VARCHAR(255)')
FROM @originals as o
CROSS APPLY o.definition_xml.nodes('QueryNode/ChildNodes/QueryNode/@xsi:type') as x(l)
您可以使用XPath谓词([.....]
)来筛选具有特定条件的目标元素,例如:
QueryNode/ChildNodes/QueryNode/@xsi:type[.="ReferenceNode"]
所以整个查询看起来是这样的:
SELECT acode, x.l.value('.', 'VARCHAR(255)')
FROM @originals as o
CROSS APPLY o.definition_xml.nodes('QueryNode/ChildNodes/QueryNode/@xsi:type[.="ReferenceNode"]') as x(l)