jQuery:从XML获取所有子项

jQuery: get all children from XML

本文关键字:获取 XML jQuery      更新时间:2023-09-26

我想从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()返回每个值(例如办公楼 1)。

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

示例 XML 文件为:

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

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

我认为除非使用 eval 函数,否则无法做到这一点,由于多种原因,我认为这不是一个好主意。但因为你问了...给你:

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

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