sql-server - T-SQL 的 OPENXML 不适用于具有元数据的根节点
问题描述
我正在尝试阅读 XML 文档。XML 的根节点有一些元数据,因为我没有得到任何记录。如果我删除该元数据,它工作正常。有什么方法可以忽略该元数据并仍然从 XML 中检索数据。
DECLARE @myDoc XML,
@idoc INT;
SET @myDoc
= '<Leads xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/RACLeadXMLSchema.xsd">
<LeadElement>
<FirstName>abc</FirstName>
<LastName>pqr</LastName>
<Email>abc@gmail.com</Email>
<PhoneNumber>1234567890</PhoneNumber>
</LeadElement>
</Leads>';
EXEC sp_xml_preparedocument @idoc OUTPUT, @myDoc;
SELECT FirstName,
LastName,
Email,
PhoneNumber
FROM
OPENXML(@idoc, 'Leads/LeadElement')
WITH
(
FirstName VARCHAR(100) 'FirstName',
LastName VARCHAR(100) 'LastName',
Email VARCHAR(100) 'Email',
PhoneNumber VARCHAR(100) 'PhoneNumber'
);
解决方案
问题在于 Leads 元素中的最后一个命名空间声明。
xmlns="http://tempuri.org/RACLeadXMLSchema.xsd"
之后应该有一些变量xmlns
。试试下面的东西。
xmlns:xsk="http://tempuri.org/RACLeadXMLSchema.xsd"
推荐阅读
- html - 让框和文本以正确的方式出现
- apache-kafka - Kafka 客户端 poll() 每次收到消息后都会抛出 EOFError
- php - 无法登录,无法检查密码?
- python - 无法使用 img.shape 中的高度和宽度进行进一步计算
- c# - Azure AD Graph api 返回 Forbidden
- amazon-web-services - 如何使私有子网中的 EC2 实例可以从 Internet 访问?(如能够访问该网站)
- laravel - 单击laravel vuejs中的按钮后如何隐藏bootstrap-vue模式
- perl - 构建时如何查看容器中的文件?
- javascript - Discord.js 机器人,临时静音命令不会静音
- arrays - 制作一个可以一次性完成所有边框设置的数组