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

时间:2015-08-24 22:41:49

标签: javascript xml 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"

我已经尝试了一百万种组合,并尝试在互联网上找到类似的案例,但每一个都给出了这个错误或类似的东西。我错过了什么?

现在第二个问题。如果我想将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,然后只是覆盖属性名称。但我希望能够让它变成一个变量。

感谢任何想法。

0 个答案:

没有答案