2011-05-10 36 views
1

請幫我解決以下問題。Xml解析enyo框架的webos

問題是在XML解析 我的XML代碼:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
       <root type="object"> 
        <codeListValue type="object"> 
     <personnelCategory type="array"> 
      <item type="string">Regular</item> 
      <item type="string">International</item> 
      <item type="string">Contractor</item> 
      <item type="string">System</item> 
      <item type="string">Employee</item> 
     </personnelCategory> 
    <pcImages type="array"> 
      <item type="string">Windows</item> 
      <item type="string">Linux</item> 
      <item type="string">MAC OS</item> 
      <item type="string">Engineering Image</item> 
     </pcImages> 

</codeListValue> 
</root> 

解析代碼是一樣的,在WEB OS sdk.The解析部分是在這裏:

parseXML: function() {  
    this.items = []; 
    //this.path="/root"; 
    this.url='Values.xml'; 
    this.$.getGoogleResults.url = this.url; 
    this.$.getGoogleResults.call(); 
}, 

。 .. ... gotResultsSuccess:功能(inSender,inResponse){

var xmlstring = inResponse; 
    var parser = new DOMParser(); 
    var xmlobject = parser.parseFromString(xmlstring, "text/xml"); 

    var nodes = document.evaluate('/root', xmlobject, null, XPathResult.ANY_TYPE, null); 


    var result = nodes.iterateNext(); 
    //alert(result.textContent); 
    var i=0; 
    while(result) 
      { 

     this.items[i] = result.childNodes[0].nodeValue; 
     i++;  
     result=nodes.iterateNext(); 
    } 
    this.items=result.textContent; 
    this.$.header.setContent(this.items);// [ this is a header component i have defined and i am setting its content here] 
     }, 

我得到的結果作爲 定期國際承包商系統...工程形象

在XML完整的文本內容是越來越diaplayed serially.how做我得到各個節點和兒童nodes.i我得到空值所有這些.PLease幫助一些代碼示例。

謝謝:)

回答

0

我不太清楚你想做的事,但這裏是我如何使用XML:

使用WebService組件,並設置handleAs爲XML。

在的onSuccess功能,只要抓住結果參數做:

res = result.getElementByName('some_element'). 

這將返回所有陣列中的所謂「some_element」的元素。

你可以閱讀更多關於XML的JavaScript代碼中的http://www.w3schools.com/xml/xml_dom.asp

1

解析的問題是,循環工作只有一次,即只有一個子節點。 下面的代碼將檢索所有的子節點。

var nodes = document.evaluate('/root/codeListValue', xmlobject, null, XPathResult.ANY_TYPE, null); 


    var result = nodes.iterateNext(); 
    //alert(result.textContent); 
    var i=0; 
    while(i<result.getElementsByTagName('item').length) 
      { 

     this.items[i] = result.getElementsByTagName('item')[i].childNodes[0].nodeValue; 
     i++;  

    } 

希望這會有所幫助!