我正试图从加拿大航空公司的网站上提取一个包含雷达系统天气数据的XML文件。包含XML文件的URL为here
我一开始就陷入困境,我认为这就像使用XML包中的xmlParse函数读取URL一样简单。
library(XML)
url = "https://www.aircanada.com/content/dam/aircanada/portal/data/weather/AirCanada.xml"
xmlParse(url)
但是,我收到以下错误:
错误:XML内容似乎不是XML
这显然是一个XML文件,所以我不确定为什么会收到此错误。任何帮助/方向将不胜感激。
答案 0 :(得分:0)
通过此URL检查XML文件显示它包含一些无效字符
这是xsltproc
:
encoding error : input conversion failed due to input error, bytes 0x8F 0x6E 0x65 0x73
encoding error : input conversion failed due to input error, bytes 0x8F 0x6E 0x65 0x73
I/O error : encoder error
AirCanada.xml:1059: parser error : AttValue: ' expected
AirCanada.xml:1059: parser error : attributes construct error
AirCanada.xml:1059: parser error : Couldn't find end of Start Tag SITE line 1059
AirCanada.xml:1059: parser error : Premature end of data in tag DATAFILE line 50
unable to parse AirCanada.xml
使用来自this SO answer的解决方案清理AirCanada.xml
文件会使数据可用,但可能会有一些损失。
iconv -f utf-8 -t utf-8 -c AirCanada.xml > AirCanadaSanitized.xml
然后,您可以使用XSLT处理器处理AirCanadaSanitized.xml
。