
13.08.2004, 17:30
|
|
|
.grin! wuz here
Регистрация: Aug 2004
Адрес: paradise city
Сообщений: 3,981
|
XML 2 Object
сделал я большим потом и кровью функцию:
function xml2Object(src) {
var xmlObject = {};
var xmlSrc = new XML();
xmlSrc.ignoreWhite = true;
xmlSrc.onLoad = function() {
xmlObject = parse(xmlSrc.firstChild.firstChild, xmlObject);
xmlObject._src = src;
if (xmlSrc.firstChild.nodeName != null) {
xmlObject._fcname = xmlSrc.firstChild.nodeName;
}
if (xmlSrc.firstChild.nodeValue != null) {
xmlObject._fcvalue = xmlSrc.firstChild.nodeValue;
}
if (xmlSrc.firstChild.attributes != null) {
xmlObject._fcattributes = new Array();
for (var i in xmlSrc.firstChild.attributes) {
xmlObject._fcattributes[i] = xmlSrc.firstChild.attributes[i];
//trace("!!!"+xmlObject._fcattributes[i]);
}
}
//trace(xmlSrc.firstChild.firstChild.nodeType)
};
xmlSrc.load(""+src);
return xmlObject;
}
function parse(foo, obj) {
var ind;
var nName = foo.nodeName.toLowerCase();
var nVal = foo.nodeValue.toLowerCase();
var nAttr = foo.attributes;
trace("<"+nName+">-<"+nVal+">-<"+nAttr["attr"]+">");
if (nName != null) {
if (obj[nName] != null) {
ind = obj[nName].length;
obj[nName] = obj[nName].concat({});
trace("<"+nName+">"+obj[nName].length)
} else {
ind = 0;
obj[nName] = [{}];
//trace("<"+nName+">"+obj[nName].length)
}
}
if (foo.nVal != null) {
obj[nName][ind]._value = nVal.toString();
//trace(obj[foo.nodeName][ind]._value);
}
obj[nName][ind]._attributes = [];
for (var klop in nAttr) {
obj[nName][ind]._attributes[klop] = nAttr[klop].toString();
//trace(obj[foo.nodeName][ind]._attributes[klop])
}
if (foo.firstChild != null) {
obj[nName][ind] = parse(foo.firstChild, obj[nName][ind]);
//trace("obj["+foo.nodeName+"]["+ind+"]")
}
if (foo.nextSibling != null) {
obj[nName][ind] = parse(foo.nextSibling, obj[nName][ind]);
}
return obj;
}
var folio = xml2Object("portfolio.xml");
if (folio != null) {
trace("_value = "+folio._fcattributes[df]);
}
_______________________
XML такой:
<fst df="dfgdfg">
<item attr="some kind of attribute" attr2="some kind of attribute #2">
<image attr2="It's workin, but badly..."/>
<image attr2="It's workin!!!"/>
<txt>dfbgdfg</txt>
</item>
<item attr="some kind of"><txt>1111</txt></item>
</fst>
_______________________
Но не работает - не увеличивает переменную ind.
Крови испорчено - море. помогите, плз.
исходник приаттачен.
__________________
Breakcore them all!
|