我有想要分解的XML。我正在尝试交叉应用,只接受xsi: QueryNode ReferenceNode的类型,但我不知道如何将.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) 发布于 2015-11-16 18:57:36
您可以使用XPath predicate ([.....])来过滤符合特定条件的目标元素,例如:
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) https://stackoverflow.com/questions/33731330
复制相似问题