有XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<GMQSTD:ProcessGMQData xsi:schemaLocation="http://www.gm.com/ns/GMQ/GMQMessageStandard GMQSchemaHeaders.xsd" xmlns:GMQSTD="http://www.gm.com/ns/GMQ/GMQMessageStandard" xmlns="http://www.gm.com/ns/GMQ/GMQSchemaExtensions" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<GMQSTD:ApplicationArea>
<GMQSTD:GMQHeader>
<releaseID> </releaseID>
</GMQSTD:GMQHeader>
</GMQSTD:ApplicationArea>
</GMQSTD:ProcessGMQData>
想读取releaseID
EXEC sp_xml_preparedocument @docHandle OUTPUT, @xmlfile, '<root xmlns:GMQSTD="http://www.gm.com/ns/GMQ/GMQMessageStandard" />' SELECT *
FROM OPENXML(@docHandle, ’/GMQSTD:ProcessGMQData/GMQSTD:ApplicationArea/GMQSTD:GMQHeader‘, 2)
WITH (releaseID varchar(50) ‘releaseID')EXEC sp_xml_removedocument @docHandle
死活读不出来。 换了好几种方式,对这种带命名空间的节点下又有不带命名空间的xml读取实在棘手啊。那位有解决方案,不吝赐教啊!谢啦!
<?xml version="1.0" encoding="ISO-8859-1"?>
<GMQSTD:ProcessGMQData xsi:schemaLocation="http://www.gm.com/ns/GMQ/GMQMessageStandard GMQSchemaHeaders.xsd" xmlns:GMQSTD="http://www.gm.com/ns/GMQ/GMQMessageStandard" xmlns="http://www.gm.com/ns/GMQ/GMQSchemaExtensions" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<GMQSTD:ApplicationArea>
<GMQSTD:GMQHeader>
<releaseID> </releaseID>
</GMQSTD:GMQHeader>
</GMQSTD:ApplicationArea>
</GMQSTD:ProcessGMQData>
想读取releaseID
EXEC sp_xml_preparedocument @docHandle OUTPUT, @xmlfile, '<root xmlns:GMQSTD="http://www.gm.com/ns/GMQ/GMQMessageStandard" />' SELECT *
FROM OPENXML(@docHandle, ’/GMQSTD:ProcessGMQData/GMQSTD:ApplicationArea/GMQSTD:GMQHeader‘, 2)
WITH (releaseID varchar(50) ‘releaseID')EXEC sp_xml_removedocument @docHandle
死活读不出来。 换了好几种方式,对这种带命名空间的节点下又有不带命名空间的xml读取实在棘手啊。那位有解决方案,不吝赐教啊!谢啦!
SET @xmlfile='
<?xml version="1.0" encoding="ISO-8859-1"?>
<GMQSTD:ProcessGMQData xsi:schemaLocation="http://www.gm.com/ns/GMQ/GMQMessageStandard GMQSchemaHeaders.xsd"
xmlns:GMQSTD="http://www.gm.com/ns/GMQ/GMQMessageStandard"
xmlns="http://www.gm.com/ns/GMQ/GMQSchemaExtensions"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<GMQSTD:ApplicationArea>
<GMQSTD:GMQHeader>
<releaseID> bb</releaseID>
</GMQSTD:GMQHeader>
</GMQSTD:ApplicationArea></GMQSTD:ProcessGMQData>'declare @docHandle INT;
EXEC sp_xml_preparedocument @docHandle OUTPUT, @xmlfile, '<root xmlns:GMQSTD="http://www.gm.com/ns/GMQ/GMQMessageStandard" />' SELECT *
FROM OPENXML(@docHandle, '/GMQSTD:ProcessGMQData/GMQSTD:ApplicationArea/GMQSTD:GMQHeader',3)
WITH (releaseID varchar(10) '.')EXEC sp_xml_removedocument @docHandle
EXEC sp_xml_preparedocument @docHandle OUTPUT, @xmlfile, '<root xmlns:GMQSTD="http://www.gm.com/ns/GMQ/GMQMessageStandard" />' 加上 EXEC sp_xml_preparedocument @docHandle OUTPUT, @xmlfile, '<root xmlns:GMQSTD="http://www.gm.com/ns/GMQ/GMQMessageStandard" /> xmlns mylns="http://www.gm.com/ns/GMQ/GMQSchemaExtensions" '.
FROM OPENXML(@docHandle, ’/GMQSTD:ProcessGMQData/GMQSTD:ApplicationArea/GMQSTD:GMQHeader‘, 2)
WITH (releaseID varchar(50) ‘mylns:releaseID')
也能取到了。:) 谢啦!