Мне нужно вставить атрибуты из файла XML в таблицу SQL. Я бродил по Stackoverflow, чтобы найти решение, но ничего, что я пробовал, похоже, не работает.
Я пробовал с и без определения и использования пространства имен, а также всевозможных комбинаций путей к узлам для навигации по XML.
Вот часть Xml, из которой я хотел бы получить атрибуты:
``<export xmlns="http://www.arcticgroup.se/tariff/arctictariff/export" xmlns:at="http://www.arcticgroup.se/tariff/arctictariff/export" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.arcticgroup.se/tariff/arctictariff/export GoodsNomenclature.xsd ">
<id>e37c6378-892a-4c25-b3fe-d0f3fcdf5a29</id>
<exportType>GoodsNomenclatureObject</exportType>
<parameters />
<items>
<goodsNomenclature at:goodsNomenclatureCode="0101109090" at:dateEnd="2011-06-30" at:national="0" at:productLineSuffix="80" at:SID="74778" at:dateStart="2002-01-01" at:statisticalIndicator="0" at:changeType="U">
<goodsNomenclatureIndent at:national="0" at:quantityIndents="03" at:SID="74084" at:dateStart="2002-01-01" />
<goodsNomenclatureDescriptionPeriod at:national="0" at:SID="92833" at:dateStart="2002-01-01">
<goodsNomenclatureDescription at:description="andere" at:languageId="NL" at:national="0" />
<goodsNomenclatureDescription at:description="Other" at:languageId="EN" at:national="0" />
</goodsNomenclatureDescriptionPeriod>
</goodsNomenclature>
</items>
</export>``
Это последний код, который я пробовал:
INSERT INTO TblGoodsNomenclature(XMLData, CreatedDate)
SELECT Convert(Xml, BulkColumn) as BulkColumn, GETDATE()
FROM OPENROWSET(Bulk '\\shareapp\c$\temp\GoodsNomenclature.xml', Single_Blob) as x;
DECLARE @XML AS XML, @hDoc AS INT, @SQL NVARCHAR (MAX)
SELECT @XML = XmlData FROM TblGoodsNomenclature
EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML, '<export xmlns="http://www.arcticgroup.se/tariff/arctictariff/export" xmlns:at="http://www.arcticgroup.se/tariff/arctictariff/export"/>'
INSERT INTO NomenclatureCodes (NomenclatureCode, Description, DescriptionLanguage)
SELECT NomenclatureCode, Description, DescriptionLanguage
FROM OPENXML(@hDoc, '/items/goodsNomenclature/goodsNomenclatureDescriptionPeriod/goodsNomenclatureDescription/at:node')
WITH
(
NomenclatureCode INT '@at:goodsNomenclatureCode',
Description [varchar](100) '@at:description',
DescriptionLanguage [varchar](5) '@at:languageID'
)
Результат, который я получаю сейчас - это просто пустая таблица, без сообщений об ошибках. То, что я хотел бы иметь, это "goodsNomeclatureCode", "description" и "languageID" в таблице.