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 に答える