将XML名称值对动态转换为对象属性

时间:2012-04-13 02:00:48

标签: javascript xml parsing dynamic

如何动态地将属性添加到Javascript对象/类?

我正在解析一个xml文件,对于xml元素中的每个名称值对,我试图将该对作为属性添加到Javascript对象中。为清晰起见,请参阅我的示例:

function MyObject(nType)
{
    this.type = nType;
}

MyObject.prototype.parseXMLNode( /*XML Node*/ nodeXML )
{
   var attribs = nodeXML.attributes;
   for (var i=0; i<attribs.length; i++)
      this.(attribs[i].nodeName) = attribs[i].nodeValue;   // ERROR here
}

// Where the xml would look like
<myobject name="blah" width="100" height="100"/>

1 个答案:

答案 0 :(得分:1)

你非常接近。要动态调用和分配对象上的属性,您需要使用括号表示法。

例如:

person = {}
person['first_name'] = 'John'
person['last_name'] = 'Doe'

// You can now access the values using:
// person.first_name OR person['last_name']

以下内容对您有用:

MyObject.prototype.parseXMLNode( nodeXML ) {
    var attrs = nodeXML.attributes,
        length = attrs.length;

    for(var i=0; i < length; i++) {
        this[attrs[i].nodeName] = attrs[i].nodeValue;
    }
}