【发布时间】:2017-02-28 13:45:30
【问题描述】:
一台机器在测试后生成 xml 文件。问题是元素都命名相同,但我需要它们位于不同的列中。
下面是 XML 的样子:
<WorkProcess xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Header>
<Element>
<Name>
<string>CONTINENTAL_PART_NO</string>
</Name>
<Content>
<Header-Item>
<Name>Continental_Part_No</Name>
<Value>A2C73661103</Value>
<Comment />
</Header-Item>
</Content>
</Element>
<Element>
<Name>
<string>KENDRION_PART_NO</string>
</Name>
<Content>
<Header-Item>
<Name>Kendrion_Part_No</Name>
<Value>4191506A00-O</Value>
<Comment />
</Header-Item>
</Content>
</Element>
<Element>
<Name>
<string>PRODOCTION_DATE</string>
</Name>
<Content>
<Header-Item>
<Name>Prodoction_Date</Name>
<Value>20170222</Value>
<Comment />
</Header-Item>
</Content>
</Element>
<Element>
<Name>
<string>COUNTING_NO</string>
</Name>
<Content>
<Header-Item>
<Name>Counting_No</Name>
<Value>0068</Value>
<Comment>Count of IO-Parts</Comment>
</Header-Item>
</Content>
</Element>
从这个 XML 中,我需要将名称作为列名,并将值作为该列中的值。
使用我的代码:
DECLARE @XML AS XML, @hDoc AS INT, @SQL NVARCHAR (MAX)
SELECT @XML = XMLData FROM XMLwithOpenXML
EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML
SELECT *
FROM OPENXML(@hDoc, 'WorkProcess/Header/Element/Content/Header-Item',2)
WITH
(Continental_Part_No [varchar](50) 'Value')
EXEC sp_xml_removedocument @hDoc
GO
我只能获取 1 列中的所有值,因为它们都具有相同的路径。
有解决这个问题的办法吗?
感谢您的帮助!
【问题讨论】:
标签: sql sql-server xml database