XML内容未被识别

问题描述:

我正试图从加拿大航空网站上提取包含来自雷达系统的天气数据的XML文件。包含XML文件的URL是hereXML内容未被识别

我一直坚持在开始,我认为它会像使用XML包中的xmlParse函数读入URL一样简单。

library(XML) 

url = "https://www.aircanada.com/content/dam/aircanada/portal/data/weather/AirCanada.xml" 
xmlParse(url) 

不过,我得到以下错误:

Error: XML content does not seem to be XML

它清楚地是一个XML文件,所以我不知道为什么我收到这个错误。任何帮助/方向将不胜感激。

+2

... xmlParse不从URL中检索信息。你要求它解析字符串“https://www.aircanada.com/content/dam/aircanada/portal/data/weather/AirCanada.xml”,而不是页面。您必须添加一个参数“isURL = TRUE” – Jean

+1

_“您不会...通过任何...自动,电子或技术设备访问或使用...网站,包括但不限于自动脚本,机器人,爬网,屏幕刮板,网页“机器人”,...,蜘蛛, - 宏程序或任何其他...程序,软件,系统,算法,方法或技术......执行相同或相似的功能,以便但不限于:“数据挖掘”; “屏幕抓取”;数据处理;访问,提取,复制,分发,汇总或获取信息; ......输入或存储信息; ......或操纵或监控本网站的任何部分或内容; – hrbrmstr

检查此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 

消毒的AirCanada.xml文件从this SO answer该解决方案使数据可以使用,但可能有一些损失。

iconv -f utf-8 -t utf-8 -c AirCanada.xml > AirCanadaSanitized.xml 

然后,您可以使用XSLT处理器处理AirCanadaSanitized.xml