tools/migration/migrator/jabberd14: Use util.xml.
authorWaqas Hussain <waqas20@gmail.com>
Mon, 03 Dec 2012 05:44:48 +0500
changeset 5218 8350eaa3f3f3
parent 5217 f2becd36d1d0
child 5219 060d7fc6caf4
tools/migration/migrator/jabberd14: Use util.xml.
tools/migration/migrator/jabberd14.lua
--- a/tools/migration/migrator/jabberd14.lua	Mon Dec 03 05:42:17 2012 +0500
+++ b/tools/migration/migrator/jabberd14.lua	Mon Dec 03 05:44:48 2012 +0500
@@ -1,7 +1,7 @@
 
 local lfs = require "lfs";
-local lxp = require "lxp";
 local st = require "util.stanza";
+local parse_xml = require "util.xml".parse;
 local os_getenv = os.getenv;
 local io_open = io.open;
 local assert = assert;
@@ -17,55 +17,6 @@
 	return path:gsub("\\", "/"):gsub("//+", "/"):gsub("^~", os_getenv("HOME") or "~");
 end
 
-local parse_xml = (function()
-	local ns_prefixes = {
-		["http://www.w3.org/XML/1998/namespace"] = "xml";
-	};
-	local ns_separator = "\1";
-	local ns_pattern = "^([^"..ns_separator.."]*)"..ns_separator.."?(.*)$";
-	return function(xml)
-		local handler = {};
-		local stanza = st.stanza("root");
-		function handler:StartElement(tagname, attr)
-			local curr_ns,name = tagname:match(ns_pattern);
-			if name == "" then
-				curr_ns, name = "", curr_ns;
-			end
-			if curr_ns ~= "" then
-				attr.xmlns = curr_ns;
-			end
-			for i=1,#attr do
-				local k = attr[i];
-				attr[i] = nil;
-				local ns, nm = k:match(ns_pattern);
-				if nm ~= "" then
-					ns = ns_prefixes[ns]; 
-					if ns then 
-						attr[ns..":"..nm] = attr[k];
-						attr[k] = nil;
-					end
-				end
-			end
-			stanza:tag(name, attr);
-		end
-		function handler:CharacterData(data)
-			stanza:text(data);
-		end
-		function handler:EndElement(tagname)
-			stanza:up();
-		end
-		local parser = lxp.new(handler, "\1");
-		local ok, err, line, col = parser:parse(xml);
-		if ok then ok, err, line, col = parser:parse(); end
-		--parser:close();
-		if ok then
-			return stanza.tags[1];
-		else
-			return ok, err.." (line "..line..", col "..col..")";
-		end
-	end;
-end)();
-
 local function load_xml(path)
 	local f, err = io_open(path);
 	if not f then return f, err; end