0

我有这种格式的xml:

<ops>
<emp>
    <name>qwer</name>
    <ntid>qwer</ntid>
    <pwd>qwer</pwd>
    <mailid>qwer</mailid>
    <score>
        <attempt>
            <percentage>75</percentage>
            <result>3</result>
            <exam_name>db_creation_retirement</exam_name>
        </attempt>
    </score>
</emp>
    <emp>
    <name>asdf</name>
    <ntid>asdf</ntid>
    <pwd>asdf</pwd>
    <mailid>asdf</mailid>
    <score>
        <attempt>
            <percentage>75</percentage>
            <result>3</result>
            <exam_name>db_creation_retirement</exam_name>
        </attempt>
                    <attempt>
            <percentage>25</percentage>
            <result>1</result>
            <exam_name>db_creation_retirement</exam_name>
        </attempt>
                    <attempt>
            <percentage>50</percentage>
            <result>2</result>
            <exam_name>db_creation_retirement</exam_name>
        </attempt>

    </score>
</emp>
<ops>

我想要javascript中名称的所有尝试的百分比、结果和exam_name。

这是我正在使用的javascript,我很高兴获取子节点值。

我正在选择名称,对于选定的名称,我希望显示完整的乐谱标签。请帮助我得到这个。我使用的 javascript 是:

for ( var i = 0; i < xmlDoc.getElementsByTagName("name").length; i++) {
        uname = xmlDoc.getElementsByTagName("name")[i].childNodes[0].nodeValue;
        alert(uname);

        if (selectedValue == uname) {

             for ( var j = 0; j < xmlDoc.getElementsByTagName("score")[i].childNodes.length; j++) {
                var attempt = xmlDoc.getElementsByTagName("score")[i].childNodes[j].nodeValue;
                alert("in loop");
                alert(attempt);
            } 
            alert("name is equal");
            break;
        }
    }
4

2 回答 2

1

对于给定的名称检索它的分数:

   function getScoreByName(nameparam, xml){
      var nameList = xml.getElementsByTagName('name');

      for(var i=0; i<nameList.length; i++){
        if(nameparam === nameList[i].firstChild.nodeValue){

           //parentNode = <emp>
           //lastChild = <score>
           handleAttempts(nameList[i].parentNode.lastChild.childNodes);

           //print name here
        } 
      }
    }

    function handleAttempts(attemptList){
      var percentage; 
      var result; 
      var examName; 

      for(var i=0; i<attemptList.length; i++){
        percentage=attemptList[i].childNodes[0].firstChild.nodeValue;
        result=attemptList[i].childNodes[1].firstChild.nodeValue;
        examName=attemptList[i].childNodes[2].firstChild.nodeValue;  

        //print attempt here
      }
    }
于 2013-09-11T12:46:25.407 回答
0

使用 jQuery 及其选择器,例如

elements = $(yourXml).find('name');
$.each(elements, function(key, elem) {
    $(elem).find("score");
    //do whatever you want with individual score nodes
} );
于 2013-09-11T10:50:48.623 回答