XML标记中没有发生追加

时间:2016-10-28 13:35:03

标签: javascript xml extjs extjs6

我有一个xml数据,如下所示。

<Sports>
<Oplympics>

    <CONT Team="All" Country="Some" FLG = "0">
        <TeamData Data="1" Data="2" Data="3"/>
    </CONT>


    <CONT Team="Aus" Country="Australia" FLG = "0">
        <TeamData Player="X1" Player2 = "X2"/>
    </CONT>

    <CONT Team="Eng" Country="England" FLG = "0">
        <TeamData Player="Y1" Player2 = "Y2"/>
    </CONT>
</Oplympics>

 我想要的是从CONT获取TeamData的第一个标记,并从第2个到最后添加到所有CONT。示例输出将类似于

<Sports>
<Oplympics>

    <CONT Team="All" Country="Some" FLG = "0">
        <TeamData Data="1" Data="2" Data="3"/>
    </CONT>


    <CONT Team="Aus" Country="Australia" FLG = "0">
        <TeamData Player="X1" Player2 = "X2"/>
        <TeamData Data="1" Data="2" Data="3"/>
    </CONT>

    <CONT Team="Eng" Country="England" FLG = "0">
        <TeamData Player="Y1" Player2 = "Y2"/>
                    <TeamData Data="1" Data="2" Data="3"/>

    </CONT>
</Oplympics>

我正在尝试此代码。在这里我得到TeamData然后在for循环中它设置为第一个元素但是第二个它没有进入循环。我错过了什么。任何人都可以帮忙

var TeamData = Xml.getElementsByTagName('CONT')[0];
var CONTTag = Xml.getElementsByTagName('CONT');
                for(var i=1; i<CONTTag.length-1; CONTTag++){
                    CONTTag[i].append(TeamData);
                }

1 个答案:

答案 0 :(得分:1)

您的代码存在一些问题:

  1. 第一行中的语法错误 - 删除'。'在结束之间 支架和开口方括号。
  2. TeamData变量实际上不包含TeamData节点 - 需要更改选择器。
  3. 循环应从1开始,而不是零,因为第一个CONTTag节点是您要复制的节点。
  4. 循环应该增加i,而不是CONTTag。
  5. 以下是包含这些修补程序的代码:

    var TeamData = Xml.getElementsByTagName('TeamData')[0];
    var CONTTag = Xml.getElementsByTagName('CONT');
    for (var i = 1; i < CONTTag.length; i++) {
      CONTTag[i].append(TeamData.cloneNode());
    }
    

    其他一些一般性意见:

    1. 您的XML缺少结束标记。
    2. XML节点不应具有重复名称的属性 - 因此您的TeamData节点目前是无效的XML。