如何克隆XML节点,更改其中的值并附加它而不用jQuery更改所有节点?

时间:2016-10-27 16:32:11

标签: javascript jquery xml dom

我有一个XML文档,其中使用xmldoc.find("main_node")检索此特定节点:

<main_node>
   <rule_node>
     <rule_name>Default_rule</rule_name>
   </rule_node>
</main_node>

我正在尝试克隆<rule_node>节点,更改其中的<rule_name>节点值,然后将其附加到<main_node>节点,但我总是更改所有{{1}节点值。

我在变量名<rule_name>中存储默认的<rule_node>节点,然后像这样执行克隆和值更改:

rule_xml

导致此XML不正确:

for (i=0; i < 3; i++) {
   $(rule_xml).clone().appendTo(sld.find("main_node")).find("rule_name").text("Rule_no" + (i+1))       
}

我尝试使用这样的children()函数,但它不起作用:

<main_node>
   <rule_node>
     <rule_name>Rule_no2</rule_name>
   </rule_node>
   <rule_node>
     <rule_name>Rule_no2</rule_name>
   </rule_node>
   <rule_node>
     <rule_name>Rule_no2</rule_name>
   </rule_node>
   <rule_node>
     <rule_name>Rule_no2</rule_name>
   </rule_node>
</main_node>

如何更改克隆节点的$(rule_xml).clone().children().find("rule_name").text("new_text_here") .appendTo(sld.find("main_node")) 节点文本?

1 个答案:

答案 0 :(得分:1)

根据您给出的结果,您的当前代码似乎在每次迭代时更新每个rule_name元素。然而,它们都被编号为2有点奇怪 - 我希望它们都被编号为3(最后一次迭代为2,规则编号为i + 1)。我刚刚测试了您的代码,我无法复制该问题。

也许试试这段代码,看看它是否适合你:

for (i=0; i < 3; i++) {
    //Clone the node
    var newNode = $(rule_xml).clone();
    //Update that individual node
    newNode.find("rule_name").text("Rule_no" + (i+1));
    //Now append that node
    newNode.appendTo(sld.find("main_node"))       
}