XML 解析:第 1 行,第 7 个字符,需要分号
Posted
技术标签:
【中文标题】XML 解析:第 1 行,第 7 个字符,需要分号【英文标题】:XML parsing: line 1, character 7, semicolon expected 【发布时间】:2013-08-31 06:30:00 【问题描述】:在 C# 中运行此 XML SQL 时发生错误。缺什么?它在 SQL Server 管理工作室中运行良好,但在 c# 中运行良好。
protected DataTable ServiceCodes(string orderColumn = default(string), bool orderAscending = true)
string sql = @" SELECT DISTINCT(Split.a.value('.', 'VARCHAR(100)')) AS Data
FROM
(
SELECT CAST('<M>' + REPLACE(Text09, ',', '</M><M>') + '</M>' AS XML) AS Data
FROM Assets
WHERE Category = 'Service'
) AS A CROSS APPLY Data.nodes ('/M') AS Split(a) ORDER BY Data";
return DatabaseConnection.ExecuteDataTable(sql, 120000);
【问题讨论】:
您确定它在 SSMS 中有效吗?我的意思是Split.a.value('.', 'VARCHAR(100)')
??
检查 XML 文本,我希望有一个 &amp;
作为 xml 字符实体的开头(应该以分号结尾)。将其替换为&amp;
。
是的,它就像 SSMS 中的一种享受。
【参考方案1】:
我认为您的Text09
专栏中有一些特殊字符。试试这个:
SELECT DISTINCT(Split.a.value('.', 'VARCHAR(100)')) AS Data
FROM
(
SELECT CAST('<M>' + replace((select Text09 + '' for xml path('')), ',', '</M><M>') + '</M>' AS XML) AS Data
FROM Assets
WHERE Category = 'Service'
) AS A CROSS APPLY Data.nodes ('/M') AS Split(a) ORDER BY Data
见sql fiddle demo
【讨论】:
以上是关于XML 解析:第 1 行,第 7 个字符,需要分号的主要内容,如果未能解决你的问题,请参考以下文章
C# XML 解析 - 根级别的数据无效。第 1 行,位置 1