2014-01-24 90 views
0
<collection> 
    <personRepresentaion> 
     <theId>1</theId> 
     <name>John</name> 
     <height>10</height> 
     <width>12</width> 
     <relationships> 
      <inputId>1324</inputId> 
      <outputId>1325</outputId> 
     </relationships> 
    </personRepresentaion> 
    <personRepresentaion> 
     <theId>2</theId> 
     <name>Bill</name> 
     <height>10</height> 
     <width>12</width> 
    </personRepresentaion> 
    <personRepresentaion> 
     <theId>3</theId> 
     <name>Bob</name> 
     <height>10</height> 
     <width>12</width> 
     <relationships> 
      <inputId>1324</inputId> 
      <outputId>1325</outputId> 
     </relationships> 
    </personRepresentaion> 
</collection> 

CurrentlyI是這個XML文件,我想分析出該領域< outputId>,這樣我就可以用我的功能connectId(源,目的地)連接的兩個對象的字段。解析,只有部分對象包含

的問題是,我使用一個for循環像下面顯示它們在我的網頁:

var x=xmlDoc.getElementsByTagName("personRepresentaion"); 

for(i=0;i<x.length;i++) { 
connectId(x[i].getElementsByTagName("theId")[0].childNodes[0].nodeValue, 
x[i].getElementsByTagName("relationships")[0].getElementsByTagName("outputId")[0].childNodes[0].nodeValue); 
} 
在XML

Bill沒有現場<relationships>,所以循環只是停止並退出當它到達比爾。

我需要先找到只有人有關係的字段,然後使用for循環,然後爲這些對象調用connectId(),我該如何實現?

+0

你的XML和JavaScript並不匹配 - 什麼是'beanRepresentation','beanRepId'等 –

+0

對不起,固定的 – PhoonOne

回答

1

嘗試

var $xml = $(xmlDoc); 
$xml.find('personRepresentaion').has('outputId').has('inputId').each(function() { 
    var $br = $(this); 
    connectId($br.find('theId').text(), $br.find('outputId').text()); 
}) 

演示:Fiddle

+0

作品完美,謝謝 – PhoonOne