Javascript Jquery不正确的子编号XML解析器

Javascript Jquery不正确的子编号XML解析器,javascript,jquery,Javascript,Jquery,最近,我在使用Jquery用JavaScript编写小型XML解析器时遇到了问题。我用于完成此任务的代码如下: /*Private */ var XMLObject=$.parseXML(dataXml); var $XMLObject=$(XMLObject); var questionNumber=0; // array of XML objects var questionsXML= new Array(); /** Html questions */ /

最近,我在使用Jquery用JavaScript编写小型XML解析器时遇到了问题。我用于完成此任务的代码如下:

     /*Private */
 var XMLObject=$.parseXML(dataXml);
 var $XMLObject=$(XMLObject); 

 var questionNumber=0;
 // array of XML objects 
 var questionsXML= new Array();

 /** Html questions */ 
 //array of strings
 var questionsHTML= new Array();
 /*********************
  * Constructor       *
  *********************/

 a=$XMLObject.find("questions"); 
 a.children().each( function () {
     console.log( "XML : " +  new XMLSerializer().serializeToString(this));
     questionsXML[questionNumber]=this;
     questionNumber++; 
 });


this.getXML=function () {
    var out = new XMLSerializer().serializeToString(this.XMLObject);
    return out;
}

this.getQuestionNumber=function() { 
    return questionNumber; 
}

// This function returns the question sequentially. 
this.getQuestion=function() { 
}

Test function  :

    function testXML () { 
        var xml ="XML see later"
        var Obj= new XMLQuestions(xml); 
        console.log("Question Number: " + Obj.getQuestionNumber());
    }
我不明白为什么返回的孩子数是3,而应该是2。正如Jquery文档中所述,子函数应该只检查XML树的第一级

用作测试的XML如下所示:

<questionnaire>
  <questions>
      <question id="1">
          <number></number>
          <title>Q1</title>
          <answers >
              <answer type="TextInput">
                  <result>ss</result>
                  <questions>
          <title>Hidden</title>
         </questions>
              </answer>
          </answers>
      </question>
    <question id="2">
    <title>Q2</title>
    </question>
  </questions>
</questionnaire>

Q1
党卫军
隐藏的
问题2
正如你所看到的,问题的孩子数量是两个

我得到的结果如下:

XML : <question id="1">           <number/>           <title>Q1</title>           <answers>               <answer type="TextInput">                   <result>ss</result>                     <questions>                     <title>Hidden</title>                   </questions>                </answer>           </answers>          </question> question.js:24
XML : <question id="2">         <title>Q2</title>       </question> question.js:24
XML : <title>Hidden</title> question.js:24
Question Number: 3 
XML:Q1-ss-Hidden-question.js:24
XML:Q2问题。js:24
XML:Hidden question.js:24
问题编号:3

你能帮我吗

在没有此类属性的情况下,调用
this.XMLObject
是否会导致错误?您正在定义
var-XMLObject
,它与
this.XMLObject
不同

当实际变量不是属性时调用
this.$XMLObject
也会引发异常

另一件事:尝试使用
questionsXML.push(this)
,而不必增加变量
questionNumber
。要返回计数,请使用
返回问题xml.length

除此之外,我认为您的代码应该返回正确的值。或者可能有更多的子节点(内部节点/值)

要测试的XML:

<questionnaire>
    <questions>
        <question id="1">
            <number></number>
            <title>Q1</title>
            <answers>
                <answer type="TextInput">
                <result>ss</result>
            </answers>
        </question>
        <question id="2">
            <number></number>
            <title>Q1</title>
            <answers>
                <answer type="TextInput">
                <result>sSSs</result>
            </answers>
        </question>
    </questions>
</questionnaire>

Q1
党卫军
Q1
sSSs

如果这是您正在使用的实际XML,那么它根本不应该工作。。。标记有点混乱。你能试试我的并给出结果吗?你写自己的解析器的具体原因是什么?已经有很多解析器可用。