jQuery:从XML中获取所有孩子

时间:2013-10-07 22:16:47

标签: javascript jquery

我想从XML文档中获取所有子项,并将名称放入variable = value。脚本需要是动态的 - xml节点名称将传递给脚本,没有任何硬编码。例如,如果xml文件的用户想要添加节点,他可以将该变量传递给JavaScript,它将在XML文件中引用该节点。

$.ajax({
            type: 'GET',
            url: xmlDoc,
            dataType: 'xml',
            success: function(xml) {
                $(xml).find('Event').each(function() {

                }

放入.find('Event')函数的内容是什么? $(this).children()返回包含<Event></Event>下每个节点名称的对象(例如EventLocation),$(this).children().text()返回每个值(例如Office Building 1)。

我想为xml文件的每个节点添加一个变量,等于它的值。

示例XML文件将是:

<Events>
    <Event>
        <EventLocation>Office Building 1</EventLocation>
    </Event>
</Events>

1 个答案:

答案 0 :(得分:1)

因此,您要创建一个新变量,其名称是标记名称,其值是该标记的值。

除非使用eval函数,否则我认为不能这样做,我认为number of reasons不是一个好主意。但是因为你问了......在这里你走了:

$(xml).find('Event').children().each(function() {
  eval(this.nodeName.toLowerCase() + '="' + $(this).text() + '"');
});

这将为您创建变量。然而,它非常脏并且容易出错。如果标记名称包含不能用作变量名称的字符,则它将崩溃。 eval也很慢,可能被黑客误用。根据您的要求,您可以使用其他选项,例如使用关联数组