我只是在学习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,然后只是覆盖属性名称。但我希望能够让它变成一个变量。
感谢任何想法。