3
当您从XML和节点中删除<data>
包装时,此代码正常工作,但是当您添加它时,如下所示,我得到0个结果。当XML有2个包装时,无法读取内容
-- Declare XML variable
DECLARE @data XML;
-- Element-centered XML
SET @data =
N'
<data xmlns="test.xsd">
<subdata>
<customer>
<id>1</id>
<name>Allied Industries</name>
</customer>
<customer>
<id>2</id>
<name>Trades International</name>
</customer>
</subdata>
</data>';
-- Using the query() method
SELECT T.customer.query('id').value('.', 'INT') AS customer_id,
T.customer.query('name').value('.', 'VARCHAR(20)') AS customer_name
FROM @data.nodes('data/subdata/customer') AS T(customer);
但正常工作时,我不喜欢这样写道:
-- Element-centered XML
SET @data =
N'
<subdata>
<customer>
<id>1</id>
<name>Allied Industries</name>
</customer>
<customer>
<id>2</id>
<name>Trades International</name>
</customer>
</subdata>
';
-- Using the query() method
SELECT T.customer.query('id').value('.', 'INT') AS customer_id,
T.customer.query('name').value('.', 'VARCHAR(20)') AS customer_name
FROM @data.nodes('subdata/customer') AS T(customer);
有谁知道为什么我没有在第一个例子中得到结果,当<data>
父包装是吗?
雅它做了,谢谢..我也有这个'<?xml version =“1.0”encoding =“utf-8”?>'的另一个问题,当它从上面开始,我得到一个错误,说'不能改变xml的编码类型,如果你很快就知道它,你怎么得到这个当你的xm l文件在顶部带有这个文件吗? –
@ZeeTee:我相信如果你用一个'N'来给你的XML数据加前缀,那么它不会像utf-8声明(因为它现在是一个'NVARCHAR'字符串,因此使用UCS-2 Unicode编码)。要么删除该XML声明行,要么删除“N”前缀。 –
是的,你真棒,那(删除N')也做了伎俩..谢谢! –