XML 使用 Nodes() 方法没有结果
No result using Nodes() method for XML
我很难在使用 Nodes()
方法打开 xml 文档时得到结果。
这是我为测试而写的:
SELECT
@xml= CAST(XmlDoc AS XML)
FROM
OPENROWSET(BULK 'F:\F_3017541.XML' ,SINGLE_BLOB) AS tab(XmlDoc)
SELECT @xml;--Result
select
col.value('(ShipmentNo)[1]', 'varchar(150)') as ShipmentNO ,
col.value('(DomShipmentNo)[1]', 'varchar(150)') as DomShipmentNo
from @xml.nodes('/Shipment') AS tab(col)
@xml 变量将存储以下模式:
<FreightAdviceMsg Version="1.0" Sender="Test" ShippingUnit="DE">
<Shipment DomShipmentNo="Shipno123" ShipmentNo="123456" ShippingDate="2020-08-04" >
<Packages>
<Package PkgNo="987654" DomPkgNo="654321" PalletType="PC" GrossWeight="3.7" Volume="0" />
</Packages>
</Shipment>
</FreightAdviceMsg>
我没有得到上述查询的任何结果(没有错误,只有没有结果)。
有什么我遗漏的吗?归根结底,我只想将所有货物和包裹 Infos
存储在 MSSQL table.
中
我是不是用错方法了?不幸的是,我过去与 xml 合作不多,因此我很高兴收到任何评论。
提前致谢:-)
你很接近!试试这个:
DECLARE @xml XML =
'<FreightAdviceMsg Version="1.0" Sender="Test" ShippingUnit="DE">
<Shipment DomShipmentNo="Shipno123" ShipmentNo="123456" ShippingDate="2020-08-04" >
<Packages>
<Package PkgNo="987654" DomPkgNo="654321" PalletType="PC" GrossWeight="3.7" Volume="0" />
</Packages>
</Shipment>
</FreightAdviceMsg>';
SELECT
col.value('@ShipmentNo', 'varchar(150)') AS ShipmentNO,
col.value('@DomShipmentNo', 'varchar(150)') AS DomShipmentNo
FROM @xml.nodes('//FreightAdviceMsg/Shipment') AS tab(col);
Returns
+------------+---------------+
| ShipmentNO | DomShipmentNo |
+------------+---------------+
| 123456 | Shipno123 |
+------------+---------------+
我很难在使用 Nodes()
方法打开 xml 文档时得到结果。
这是我为测试而写的:
SELECT
@xml= CAST(XmlDoc AS XML)
FROM
OPENROWSET(BULK 'F:\F_3017541.XML' ,SINGLE_BLOB) AS tab(XmlDoc)
SELECT @xml;--Result
select
col.value('(ShipmentNo)[1]', 'varchar(150)') as ShipmentNO ,
col.value('(DomShipmentNo)[1]', 'varchar(150)') as DomShipmentNo
from @xml.nodes('/Shipment') AS tab(col)
@xml 变量将存储以下模式:
<FreightAdviceMsg Version="1.0" Sender="Test" ShippingUnit="DE">
<Shipment DomShipmentNo="Shipno123" ShipmentNo="123456" ShippingDate="2020-08-04" >
<Packages>
<Package PkgNo="987654" DomPkgNo="654321" PalletType="PC" GrossWeight="3.7" Volume="0" />
</Packages>
</Shipment>
</FreightAdviceMsg>
我没有得到上述查询的任何结果(没有错误,只有没有结果)。
有什么我遗漏的吗?归根结底,我只想将所有货物和包裹 Infos
存储在 MSSQL table.
我是不是用错方法了?不幸的是,我过去与 xml 合作不多,因此我很高兴收到任何评论。
提前致谢:-)
你很接近!试试这个:
DECLARE @xml XML =
'<FreightAdviceMsg Version="1.0" Sender="Test" ShippingUnit="DE">
<Shipment DomShipmentNo="Shipno123" ShipmentNo="123456" ShippingDate="2020-08-04" >
<Packages>
<Package PkgNo="987654" DomPkgNo="654321" PalletType="PC" GrossWeight="3.7" Volume="0" />
</Packages>
</Shipment>
</FreightAdviceMsg>';
SELECT
col.value('@ShipmentNo', 'varchar(150)') AS ShipmentNO,
col.value('@DomShipmentNo', 'varchar(150)') AS DomShipmentNo
FROM @xml.nodes('//FreightAdviceMsg/Shipment') AS tab(col);
Returns
+------------+---------------+
| ShipmentNO | DomShipmentNo |
+------------+---------------+
| 123456 | Shipno123 |
+------------+---------------+