将 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>
我正在学习 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>