无法在 SQL 服务器中打开 xml

Unable to open xml in SQL Server

这是我的样本 xml,

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfClientContactDetail xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                            xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <ClientContactDetail>
        <PersonName>adsf asfd</PersonName>
        <EmailAddress>test@gmail.com</EmailAddress>
        <PhoneNumber>9876543210</PhoneNumber>
    </ClientContactDetail>
</ArrayOfClientContactDetail>

这是我的 sql 代码:

DECLARE @idoc IN

EXEC sp_xml_preparedocument @idoc OUTPUT
,@ClientDetail;


SELECT *
FROM OPENXML(@idoc, 'ArrayOfClientContactDetail/ClientContactDetail', 2) WITH (
    PersonName VARCHAR(100) '@PersonName'
    ,EmailAddress VARCHAR(100) '@EmailAddress'
    ,PhoneNumber VARCHAR(15) '@PhoneNumber'
    ,CompanyID INT '@CompanyID'
    );

您在 ColPattern 中指定您需要属性而不是节点值。

'@PersonName' 更改为 'PersonName'

完成 @idoc 后不要忘记调用 sp_xml_removedocument

如果您使用的是 SQL Server 2005 或更高版本,则可以改用 XML 数据类型。

select C.X.value('(PersonName/text())[1]', 'varchar(100)') as PersonName,
       C.X.value('(EmailAddress/text())[1]', 'varchar(100)') as EmailAddress,
       C.X.value('(PhoneNumber/text())[1]', 'varchar(100)') as PhoneNumber,
       C.X.value('(CompanyID/text())[1]', 'varchar(100)') as CompanyID
from @ClientDetail.nodes('ArrayOfClientContactDetail/ClientContactDetail') as C(X);