我有下面给出的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的第一个标签,并从第二个到最后添加到所有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);
                }

最佳答案

您的代码有一些问题:


第一行出现语法错误-删除“。”关闭之间
支架和开口方括号。
TeamData变量实际上并不包含TeamData节点-需要更改选择器。
循环应从1开始,而不是零,因为第一个CONTTag节点是您要复制的节点。
循环应增加i,而不是CONTTag。


这是您的代码,其中包含这些修复程序:

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


其他一些一般性评论:


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

09-26 19:27