【问题标题】:Fetch Child Node values of xml in javascript在javascript中获取xml的子节点值
【发布时间】:2013-09-15 08:22:18
【问题描述】:

我的 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>

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

这是我正在使用的 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;
        }
    }

【问题讨论】:

    标签: javascript xml javascript-framework


    【解决方案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
          }
        }
    

    【讨论】:

      【解决方案2】:

      使用 jQuery 及其选择器,例如

      elements = $(yourXml).find('name');
      $.each(elements, function(key, elem) {
          $(elem).find("score");
          //do whatever you want with individual score nodes
      } );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-10-09
        • 1970-01-01
        • 2013-04-21
        • 1970-01-01
        • 1970-01-01
        • 2021-10-23
        • 2013-03-19
        相关资源
        最近更新 更多