You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
161 lines
3.0 KiB
161 lines
3.0 KiB
function xmlToVar (data)
|
|
{
|
|
if (!data.hasChildNodes ())
|
|
return null;
|
|
|
|
var ret = null;
|
|
|
|
for (var node in data.childNodes)
|
|
{
|
|
var child = data.childNodes[node];
|
|
|
|
if (child.nodeType === 3 && child.nodeValue !== null)
|
|
{
|
|
ret = data.childNodes[node].nodeValue;
|
|
break;
|
|
}
|
|
}
|
|
|
|
switch (data.getAttribute ('type'))
|
|
{
|
|
case 'integer': ret = parseInt (ret, 10); break;
|
|
case 'double': ret = parseFloat (ret);
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
function xmlToObjectArray (data)
|
|
{
|
|
var ret = new Array ();
|
|
|
|
if (! data.hasChildNodes ())
|
|
return ret;
|
|
|
|
for (var node in data.childNodes)
|
|
{
|
|
var child = data.childNodes[node];
|
|
|
|
if (child.nodeType === 1)
|
|
{
|
|
name = child.getAttribute ('name');
|
|
|
|
switch (child.nodeName)
|
|
{
|
|
case 'variable':
|
|
ret[name] = xmlToVar (child); break;
|
|
case 'array':
|
|
ret[name] = xmlToArray (child); break;
|
|
case 'class':
|
|
var cName = child.getAttribute ('class');
|
|
|
|
if (typeof (eval (cName)) === 'function')
|
|
ret[name] = eval ("new " + cName + "(child)");
|
|
else
|
|
ret[name] = xmlToObjectArray (child);
|
|
}
|
|
}
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
function xmlToArray (data)
|
|
{
|
|
var ret = new Array ();
|
|
|
|
if (! data.hasChildNodes ())
|
|
return ret;
|
|
|
|
for (var node in data.childNodes)
|
|
{
|
|
var child = data.childNodes[node];
|
|
|
|
if (child.nodeType === 1 && child.nodeName === 'item')
|
|
{
|
|
var key = child.getAttribute ('key');
|
|
|
|
for (var _node in child.childNodes)
|
|
{
|
|
var _child = child.childNodes[_node];
|
|
|
|
if (_child.nodeType === 1)
|
|
{
|
|
switch (_child.nodeName)
|
|
{
|
|
case 'variable':
|
|
ret[key] = xmlToVar (_child); break;
|
|
case 'array':
|
|
ret[key] = xmlToArray (_child); break;
|
|
case 'class':
|
|
var cName = child.getAttribute ('class');
|
|
|
|
if (typeof (eval (cName)) === 'function')
|
|
ret[key] = eval ("new " + cName + "(child)");
|
|
else
|
|
ret[key] = xmlToObjectArray (child);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
function c_xmlify (data)
|
|
{
|
|
if (! data.hasChildNodes ())
|
|
return;
|
|
|
|
for (var node in data.childNodes)
|
|
{
|
|
var child = data.childNodes[node];
|
|
|
|
if (child.nodeType === 1)
|
|
{
|
|
var name = child.getAttribute ('name');
|
|
|
|
if (typeof (this[name]) !== 'undefined')
|
|
{
|
|
switch (child.nodeName)
|
|
{
|
|
case 'variable':
|
|
this[name] = xmlToVar (child); break;
|
|
case 'array':
|
|
this[name] = xmlToArray (child); break;
|
|
case 'class':
|
|
var cName = child.getAttribute ('class');
|
|
|
|
if (typeof (eval (cName)) === 'function')
|
|
this[name] = eval ("new " + cName + "(child)");
|
|
else
|
|
this[name] = xmlToObjectArray (child);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function deXmlify (data)
|
|
{
|
|
var ret = null;
|
|
var child = data.firstChild;
|
|
|
|
switch (child.nodeName)
|
|
{
|
|
case 'variable':
|
|
ret = xmlToVar (child); break;
|
|
case 'array':
|
|
ret = xmlToArray (child); break;
|
|
case 'class':
|
|
var cName = child.getAttribute ('class');
|
|
|
|
if (typeof (eval (cName)) === 'function')
|
|
ret = eval ("new " + cName + "(child)");
|
|
else
|
|
ret = xmlToObjectArray (child);
|
|
}
|
|
|
|
return ret;
|
|
}
|