// pull out /GeneralSearchResponse/categories/category/items/product tags // the rest we don't care about. var sax = require("../lib/sax.js") var fs = require("fs") var path = require("path") var xmlFile = path.resolve(__dirname, "shopping.xml") var util = require("util") var http = require("http") fs.readFile(xmlFile, function (er, d) { http.createServer(function (req, res) { if (er) throw er var xmlstr = d.toString("utf8") var parser = sax.parser(true) var products = [] var product = null var currentTag = null parser.onclosetag = function (tagName) { if (tagName === "product") { products.push(product) currentTag = product = null return } if (currentTag && currentTag.parent) { var p = currentTag.parent delete currentTag.parent currentTag = p } } parser.onopentag = function (tag) { if (tag.name !== "product" && !product) return if (tag.name === "product") { product = tag } tag.parent = currentTag tag.children = [] tag.parent && tag.parent.children.push(tag) currentTag = tag } parser.ontext = function (text) { if (currentTag) currentTag.children.push(text) } parser.onend = function () { var out = util.inspect(products, false, 3, true) res.writeHead(200, {"content-type":"application/json"}) res.end("{\"ok\":true}") // res.end(JSON.stringify(products)) } parser.write(xmlstr).end() }).listen(1337) })