从 R 访问 S3 存储桶时出现“xmlParseCharRef”错误,如何解决?

I get 'xmlParseCharRef' error when accessing S3 bucket from R, how to fix it?

提问人:ykoo 提问时间:5/23/2022 更新时间:5/23/2022 访问量:57

问:

> sessionInfo()

R version 3.6.0 (2019-04-26)

Platform: x86_64-redhat-linux-gnu (64-bit)

Running under: Amazon Linux 2

Matrix products: default
BLAS/LAPACK: /usr/lib64/R/lib/libRblas.so

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C      

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods  
[7] base     

other attached packages:
[1] aws.ec2metadata_0.2.0 aws.s3_0.3.21        
[3] paws_0.1.12          

loaded via a namespace (and not attached):
 [1] httr_1.4.2          compiler_3.6.0      R6_2.5.1           
 [4] paws.storage_0.1.12 tools_3.6.0         base64enc_0.1-3    
 [7] curl_4.3.2          aws.signature_0.6.0 xml2_1.3.3         
[10] digest_0.6.29       jsonlite_1.8.0      paws.common_0.3.17





 > Sys.setenv('AWS_DEFAULT_REGION'='ap-northeast-2')
    
 > bucket_exists("my-bucket")
    
    [1] TRUE
    
 > mybucket <- get_bucket("my-bucket")

read_xml.raw(charToRaw(enc2utf8(x)), “UTF-8”, ..., as_html = as_html, 中的错误: xmlParseCharRef:无效的 xmlChar 值 8 [9]

-> 可以很好地检查存储桶的存在,但在尝试访问实际存储桶时发生错误。

如何解决这个问题?

什么是问题?

r xml 亚马逊网络服务 amazon-s3 utf-8

评论


答:

1赞 Michael Kay 5/23/2022 #1

问题在于 XML 1.0 不允许将 Unicode 代码点 8 作为有效的 XML 字符,无论它是否作为字符引用编写。

XML 1.1 确实允许这样做,但 XML 1.1 并未被广泛采用。

与所有未通过 XML 解析的传入文档一样,您的选择是修复发送方,使其不会生成错误的 XML(首选),或者在到达时修复错误的 XML(使用接受非 XML 输入的工具,例如 Perl/sed)。在修复它之前,您需要知道发送应用程序为什么在文档中包含一个,以及它希望收件人对它执行什么操作。u0008

评论

0赞 ykoo 5/24/2022
我需要在 s3 上修复什么?
0赞 Michael Kay 5/24/2022
我不知道,我只是告诉你错误消息是什么意思。