使用coffeescript定时任务下载服务器xml和plist文件解析为json

使用coffeescript定时每隔一个小时从服务器上下载xml和plist文件,存到本地并解析为json文件
###
* 每隔一个小时从服务器下载最新的xml和plist并解析为json
###
fs = require('fs')
url = require('url')
http = require('http')
plist = require('plist')
schedule = require('node-schedule')
parseString = require('xml2js').parseString

initConfig = ()->
	initXMLConfig()
	initPlistConfig()

#下载xml并解析为Json文件
initXMLConfig = () ->
	file_url = "https://服务器地址/config.xml"
	filepath = "./config.xml"
	jsonFilepath = "./config.json"
	rule = new schedule.RecurrenceRule()
	#每小时的第0分钟第1秒执行
	rule.second = 1
	rule.minute = 0
	rule.hour = [0..23]
	schedule.scheduleJob(rule,()->
		options = {
			host: url.parse(file_url).host,port: 80,path: url.parse(file_url).pathname
		}
		http.get(options,(res)->
			if res.statusCode is 200
				file = fs.createWriteStream(filepath)
				res.on("data",(data)->
					file.write(data)
				).on("end",()->
					file.end()
					file.on('finish',()->
						console.log(file_url + " downloaded success!")
						xml = fs.readFileSync(filepath,'utf-8')
						if xml
							parseString(xml,{explicitArray: false,ignoreAttrs: true,trim: true},(err,result) ->
								if not err
									fs.writeFileSync(jsonFilepath,JSON.stringify(result),'utf-8')
									console.log("write to json success:#{jsonFilepath}")
							)
					)
				)
			else
				console.log("access " + file_url + " is error,statusCode is #{res.statusCode}")
		)
	)

#下载plist文件使用plist模块解析为json
initPlistConfig = () ->
	file_url = "https://服务器地址/config.plist"
	filepath = "./config.plist"
	jsonFilepath = "./config1.json"
	rule = new schedule.RecurrenceRule()
	#每小时的第0分钟第10秒执行
	rule.second = 10
	rule.minute = 0
	rule.hour = [0..23]
	schedule.scheduleJob(rule,(res)->
			if res.statusCode is 200
				file = fs.createWriteStream(filepath)
				res.on('data',(data)->
					file.write(data)
				).on('end','utf-8')
						if xml
							result = plist.parse(xml)
							fs.writeFileSync(jsonFilepath,'utf-8')
							console.log("write to json success:#{jsonFilepath}")
					)
				)
			else
				console.log("access " + file_url + " is error,statusCode is #{res.statusCode}")
			)
		)

exports.initConfig = initConfig

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念