将 TAG 添加到 XML 并使用变量时出错 (E4X)

Error adding TAG to XML and using variables (E4X)

我正在学习 Javascript 和 XML,有两个问题。这是我正在使用的 XML 代码:

var xmlVar =    <zone>
            <entry name="template">
                <network>
                    <layer3>
                        <member>ethernet1/3</member>
                        <member>ethernet1/1</member>
                        <member>ethernet1/3.10</member>
                    </layer3>
                    <zone-protection-profile>zone-prot-prof-ex</zone-protection-profile>
                    <log-setting>log-forward-ex</log-setting>
                </network>
                <user-acl>
                    <include-list>
                        <member>192.168.0.0/24</member>
                    </include-list>
                    <exclude-list>
                        <member>10.0.0.0/23</member>
                    </exclude-list>
                </user-acl>
                <enable-user-identification>yes</enable-user-identification>
            </entry>
        </zone>;

现在我想做两件事。首先,我想删除成员并添加新成员。我可以删除它们:

delete xmlVar..member;

但是当我尝试添加新成员时,我 运行 出现以下错误:

xmlVar.zone.entry.network.layer3.appendChild(<member>ethernet1</member>);

"The appendChild method works only on lists containing one item"

我已经尝试了一百万种组合,并试图在 Internet 上找到类似的案例,但每个组合都会出现此错误或类似的错误。我错过了什么?

现在是第二个问题。如果我想使用 XML 变量作为模板并替换某些部分怎么办?例如:

var xmlVar =    <zone>
            <entry name="{newEntryName}">
                <network>
                    {newLayer3}
                    <zone-protection-profile>zone-prot-prof-ex</zone-protection-profile>
                    <log-setting>log-forward-ex</log-setting>
                </network>
                <user-acl>
                    {newIncludeList}
                    <exclude-list>
                        <member>10.0.0.0/23</member>
                    </exclude-list>
                </user-acl>
                <enable-user-identification>yes</enable-user-identification>
            </entry>
        </zone>;

第一个尝试用可变内容替换条目名称的方法不起作用,因为它周围有引号(我可以转义它们吗?)而且我不想替换整个标签。只要我更换整个标签,其他两个就可以工作。那么有什么办法可以做到这一点?否则,我的备份计划只是使用 E4X,然后简单地覆盖属性名称。但我希望能够让它成为一个变量。

感谢任何想法。

访问子节点时不需要声明根节点名

xmlVar.entry.network.layer3.appendChild(<member>ethernet1</member>);

生产

<zone>
  <entry name="template">
    <network>
      <layer3>
        <member>ethernet1</member>
      </layer3>
      <zone-protection-profile>zone-prot-prof-ex</zone-protection-profile>
      <log-setting>log-forward-ex</log-setting>
    </network>
    <user-acl>
      <include-list/>
      <exclude-list/>
    </user-acl>
    <enable-user-identification>yes</enable-user-identification>
  </entry>
</zone>