sql server - MS SQL iterate through XML with default namespaces -
based on this reply
so example, have xml this
<parent_node > <category>low</category> <category>medium</category> <category>high</category> </parent_node> and good. in case have default xml namespace here, xml looks this:
<parent_node xmlns="http://schemas.datacontract.org/2004/07/monitorwang.core.interfaces.entities"> <category>low</category> <category>medium</category> <category>high</category> </parent_node> and doesn't work.
entire script:
declare @xmlvariable xml = '<parent_node xmlns="http://schemas.datacontract.org/2004/07/monitorwang.core.interfaces.entities"> <category>low</category> <category>medium</category> <category>high</category> </parent_node>' select xtbl.cats.value('.', 'varchar(50)') @xmlvariable.nodes('/parent_node/category') xtbl(cats) please, advice, how fix it?
if want account default namespace throughout document can use like....
declare @xmlvariable xml = '<parent_node xmlns="http://schemas.datacontract.org/2004/07/monitorwang.core.interfaces.entities"> <category>low</category> <category>medium</category> <category>high</category> </parent_node>' select xtbl.cats.value('.', 'varchar(50)') @xmlvariable.nodes('declare default element namespace "http://schemas.datacontract.org/2004/07/monitorwang.core.interfaces.entities"; /parent_node/category') xtbl(cats) alternatively, can declare namespace in xquery string , refer in xpath if default namespace on child element...
@xmlvariable.nodes('declare namespace c="http://schemas.datacontract.org/2004/07/monitorwang.core.interfaces.entities"; /parent_node/c:category') there more detail here.
Comments
Post a Comment