sql - 将 VARCHAR 转换为 XML,包括 < (<) , > (>)
问题描述
我正在以 XML 格式读取 HTML 数据。但由于某些特殊字符,我无法做到这一点。
这是我最初的问题: Using SQL read html data as XML
;WITH CTE AS
(
select 1 AS NUM ,'<BODY><TD> values = 100 </TD></BODY>' AS TES
union
select 2,'<BODY><TD> values < 100 </TD></BODY>'
)
select NUM
, CAST(TES AS XML)
from CTE
我收到 XML 解析错误。我无法替换所有 < & > 字符,因为我需要使用该标签进行遍历。
XML parsing: line 1, character 22, illegal qualified name character
你能帮我解决这个问题吗?
我发现使用正则表达式我可以做到这一点。谁能帮我为此创建正则表达式?TSQL 演示中的正则表达式: dbo.RegexReplace
解决方案
XML 非常严格。我怀疑,在纯 html 中使用裸体 <
也是一个好主意,但这似乎可行......
如果您的文本始终位于<td>
标签之间(并且中间没有其他标签),您可能会尝试使用字符串替换将损坏的数据推送到一个CDATA
部分中。
试试看...
;WITH CTE AS
(
select 1 AS NUM ,'<BODY><TD> values = 100 </TD></BODY>' AS TES
union
select 2,'<BODY><TD> values < 100 </TD></BODY>'
)
,replaced AS
(
SELECT NUM
,REPLACE(REPLACE(TES,'<TD>','<TD><![CDATA['),'</TD>',']]></TD>') AS TES_new
FROM cte
)
select NUM
, CAST(TES_new AS XML)
from replaced;
这将隐式替换所有禁用字符...
推荐阅读
- python - 首先前瞻,然后在前瞻匹配后面寻找最接近的匹配捕获组。Python 中的正则表达式
- mysql - 查找正好包含两个给定孩子的单亲 id
- xamarin - 在 Visual Studio for Mac 中使用 SiriKit “未找到匹配的配置文件”
- python - TypeError:&:'list'和'list'python不支持的操作数类型
- asp.net-core - 数据种子在 linux 服务器的托管项目中失败。ASP.NET 核心 2.1
- three.js - Three.js 从输入文件本地加载 FBX 和 Materials
- ios - Flutter Methode Channels Objective C 发送和使用 UInt8List
- linux - arm 上的 autocert 中缺少字段或方法签名方案
- android - 如何保护 Android 应用程序中的服务器 URL
- sql - 是否可以在不可为空的列上添加可选引用?