【问题标题】:Line: 35, ERR_MSG: XML parsing: line 1, character 1088, illegal qualified name characterLine: 35, ERR_MSG: XML parsing: line 1, character 1088, 非法限定名字符
【发布时间】:2016-06-13 17:35:14
【问题描述】:

如何从 XML 中替换 < 符号?我需要理解这个概念,就像我们在 xml 中将 & 替换为 &

例如:

Declare @xml xml,@xmlType nvarchar(max)

select @xmlType = '<root><stuff><test>something < this will error</test></stuff</root>'

select @xml = REPLACE(@xmlType, '<', '&lt;') 

select @xml

如果我这样做,那么答案将是

'&lt;root&gt;&lt;stuff&gt;&lt;test&gt;something &lt; this will error&lt;/test&gt;&lt;/stuff&lt;/root&gt;'....

但我需要像这样的答案

<root><stuff><test>something &lt; this will error</test></stuff></root>

谁能帮我通过SQL查询/存储过程/T-SQL解决这个问题??

如何解决这个问题:

第 35 行,ERR_MSG:XML 解析:第 1 行,字符 1088,非法限定名字符

提前致谢

【问题讨论】:

  • 这是实际答案:<root> <东西> <测试>某事<这将出错</test> </东西> </root>这是预期的答案:something <这会出错
  • 您尝试从非 XML 的内容创建 XML,&lt; 使其无效。解决这个问题的地方更高,无论该字符串来自何处。
  • 我有一个 XML 文件,其中包含特殊字符,例如 &、'、,"。我正在使用 T-SQL 从 XML 中提取元素,但一些标记值包含特殊字符。例如: abcc&dea 在从 XML db 读取自身时抛出异常。例如:第 35 行,ERR_MSG : XML 解析:第 1 行,字符 1088,非法限定名称字符。如果我验证正确解析,那么提取后的值应该是 abc,c&de,a
  • 具有包含 &lt;&amp;amp; 等值的元素的 XML 文件不是 XML,它只是看起来像 XML 的文本 - 因为这两个字符都使 XML 无效。尝试用任何东西解析它都会遇到很大的困难。
  • 亚历克斯我同意,它是 ntext 看起来像 xml,但我的主要目的是使用 t-sql 从 xml 中提取数据。但是如果这个文件包含无效字符怎么办?我们可以通过 t-sql 从 xml 中提取数据,即使它包含无效字符??

标签: sql-server xml xml-parsing for-xml-path


【解决方案1】:

您需要确保在 '

Declare
     @xml xml
    ,@xmlType nvarchar(max)

SET @xmlType = '<root><stuff><test>something < this will error</test></stuff></root>'

SET @xmlType = REPLACE(@xmlType, ' < ', ' &lt; ')

SET @xml = CAST(@xmlType AS XML)

SELECT @xml

【讨论】:

  • 感谢 Arleigh Reyna 的回复,但在 XML 中,'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-02
  • 1970-01-01
  • 1970-01-01
  • 2022-08-19
  • 2017-10-15
  • 1970-01-01
相关资源
最近更新 更多