通过XSLT从XML中删除十六进制值

时间:2012-05-04 10:13:33

标签: xml xslt ssis

我必须通过SSIS将XML数据加载到SQL Server中,在XML Source中我得到一些十六进制符号所以当我在SSIS中将该文件作为Source提供时,它不接受十六进制值,我该如何解析或删除那些(十六进制符号)。

错误:字符'',十六进制值0x2在XML文档中是非法的。

有没有办法删除使用XSLT的那些,如果有,那么请让我以正确的方式。

2 个答案:

答案 0 :(得分:0)

您的问题是XML本身不允许控制字符,即使编码为字符实体也是如此。 XSLT也无法解析它。

XML 1.1应该能够将字符包含为实体,而不是文本。

有关类似问题,请参阅"invalid XML file?""XML Task error message hexadecimal invalid character"

答案 1 :(得分:0)

  

错误:字符'',十六进制值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。