【发布时间】:2021-07-10 05:57:03
【问题描述】:
我想从 XML 中提取一个元素作为字符串。我使用的方法如下:
declare @xml xml =
'<sl:stand xmlns:sl="http://www.kadaster.nl/schemas/standlevering-generiek/1.0">
<sl-bag-extract:bagObject xmlns:sl-bag-extract="http://www.kadaster.nl/schemas/lvbag/extract-deelbestand-lvc/v20200601">
<Objecten:Pand xmlns:Objecten="www.kadaster.nl/schemas/lvbag/imbag/objecten/v20200601">
<Objecten:geometrie>
<gml:Polygon srsName="urn:ogc:def:crs:EPSG::0"
srsDimension="3"
xmlns:gml="http://www.opengis.net/gml/3.2">
<gml:exterior>
<gml:LinearRing>
<gml:posList>1 2 3 4 5 6 1 2</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</Objecten:geometrie>
</Objecten:Pand>
</sl-bag-extract:bagObject>
</sl:stand>
'
;WITH XMLNAMESPACES('http://www.kadaster.nl/schemas/standlevering-generiek/1.0' AS sl,
'http://www.kadaster.nl/schemas/lvbag/extract-deelbestand-lvc/v20200601' AS [sl-bag-extract],
'www.kadaster.nl/schemas/lvbag/imbag/objecten/v20200601' AS Objecten,
'www.kadaster.nl/schemas/lvbag/imbag/historie/v20200601' as Historie)
SELECT
Tab.Col.value('(Objecten:geometrie)[1]','varchar(max)') AS geometrie
FROM @xml.nodes('/sl:stand/sl-bag-extract:bagObject/Objecten:Pand') Tab(Col)
我将从这个查询中得到的结果是:
1 2 3 4 5 6 1 2
但我希望它是这样的:
<gml:Polygon srsName="urn:ogc:def:crs:EPSG::0"
srsDimension="3"
xmlns:gml="http://www.opengis.net/gml/3.2">
<gml:exterior>
<gml:LinearRing>
<gml:posList>1 2 3 4 5 6 1 2</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
如何从这个 XML 中提取一个元素作为字符串?
【问题讨论】:
-
Tab.Col.query('Objecten:geometrie/node()') AS 几何
标签: sql-server xml tsql