PDA

Просмотр полной версии : Перевод объекта XML в ассоциативный массив


bettrrr
07.08.2007, 19:40
получился такой класс:
class XMLParser {

public var XMLArr:Array = new Array();


function XMLParser(XMLData) {
trace("XMLParser created");
this.Parse(XMLData.firstChild,this);
}
function Parse(node, nodeParent) {
while (node != null) {
if (node.nodeType !== 3) {
nodeParent[node.nodeName] = new Object();
if (node.hasChildNodes()) {
this.Parse(node.firstChild,nodeParent[node.nodeName]);
}
} else {
nodeParent.value = node.nodeValue;
}
for (var attrib in node.attributes) {
if (nodeParent[node.nodeName]["attributes"]==undefined) {
nodeParent[node.nodeName]["attributes"] = new Object();
}
if (nodeParent[node.nodeName].attributes[attrib]==undefined) {
nodeParent[node.nodeName].attributes[attrib] = new Object();
}
nodeParent[node.nodeName].attributes[attrib] = node.attributes[attrib];
trace(node.nodeName+"== "+attrib+' = '+node.attributes[attrib]);
}
node = node.nextSibling;
}
return true;
}
}
Долго я с ним парился из-за проблем с дебаггером.
Тут всё делается в лоб, может быть можно сделать более красиво?

etc
07.08.2007, 19:46
А почему имя метода Parse и имя свойства XMLArr похожи на имя класса?

И, если уж пишете на AS2, то типизацию надо указывать. Везде.

zafod
08.08.2007, 07:58
if (node.nodeType !== 3) - что это за операция? "!=="

screamge
08.08.2007, 08:00
if (node.nodeType !== 3) - что это за операция? "!=="

Наберите в хелпе и узнаете, строгое равенство, соответствие и типов.

etc
08.08.2007, 10:23
if (node.nodeType !== 3) - что это за операция? "!=="
Строгое неравенство.

screamge
08.08.2007, 10:42
Строгое неравенство.

Угу, сорри :)