【发布时间】:2012-05-04 10:13:32
【问题描述】:
我必须通过 SSIS 将 XML 数据加载到 SQL Server 中,在 XML 源中我得到一些十六进制符号,所以当我将该文件作为 SSIS 中的源时,它不接受十六进制值,我该如何解析或删除那些(十六进制符号)。
错误:字符“”,十六进制值 0x2 在 XML 文档中是非法的。
有什么方法可以删除那些使用 XSLT 的,如果有,请让我以正确的方式。
【问题讨论】:
我必须通过 SSIS 将 XML 数据加载到 SQL Server 中,在 XML 源中我得到一些十六进制符号,所以当我将该文件作为 SSIS 中的源时,它不接受十六进制值,我该如何解析或删除那些(十六进制符号)。
错误:字符“”,十六进制值 0x2 在 XML 文档中是非法的。
有什么方法可以删除那些使用 XSLT 的,如果有,请让我以正确的方式。
【问题讨论】:
您的问题是 XML 本身不允许控制字符,即使编码为字符实体也是如此。 XSLT 也无法解析它。
XML 1.1 应该能够将字符作为实体包含在内,但不能作为文本。
有关类似问题,请参阅 "invalid XML file?" 和 "XML Task error message hexadecimal invalid character"。
【讨论】:
错误:字符“”,十六进制值 0x2 在 XML 中是非法的 文件。
有什么方法可以删除那些使用 XSLT 的,如果有,请把 我以正确的方式。
没有。这是一个 XML 解析器问题——不是 XSLT 问题。 XSLT 处理器只能看到它使用的特定 XML 解析器解析 XML 文档的结果。
因此,如果正在使用的 XSLT 处理器允许使用不同的 XML 解析器,并且您可以找到使用 XML 1.1 解析器的方法,那么只需设置 XSLT 处理器以使用这个特定的解析器。
在 XSLT 3.0(仍然是一个工作草案)中可能有一个函数可以接受原始文本并将其解析为 XML 文档/片段。这样的函数可能有一个参数要使用什么类型的 XML 解析器——XML 1.0 或 XML 1.1。
【讨论】: