0

我想从 XML 文档中获取所有子项并将名称放入变量 = 值中。脚本需要是动态的 - 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>
4

1 回答 1

1

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

我不认为这可以通过使用 eval 函数来完成,出于多种原因,我认为这不是一个好主意。但是因为你问它......你去:

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

这将为您创建变量。然而,它非常肮脏且容易出错。如果标签名称包含不能用作变量名称的字符,它将崩溃。eval 也很慢,可能被黑客滥用。根据您想要做什么,您还有其他选择,例如使用关联数组

于 2013-10-07T22:39:13.267 回答