2012-05-03 41 views
0

我希望從下面的SOAP/XML字符串中提取ItemName和Value對。我已經通過網絡破壞了我的頭,嘗試了各種適當的方式來做到這一點。我已經放棄了,只是想將數據解析爲一個字符串。我已經看過XSLT,但是我需要將SOAP數據與更多的人類可讀數據相關聯,因此將它們全部放在JavaScript數組中對我來說會更好。SOAP/XML to JavaScript數組

[塊的去除,具有良好的代碼取代了我可怕原來的JavaScript代碼。]

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<soap:Body> 
<ReadResponse xmlns="http://opcfoundation.org/webservices/XMLDA/1.0/"> 
<ReadResult RcvTime="2012-05-02T13:25:39.484+01:00" ReplyTime="2012-05-02T13:25:39.484+01:00" RevisedLocaleID="en" ServerState="running"> </ReadResult> 
<RItemList> 
<Items ItemName="_System._DateTime"> 
    <Value xsi:type="xsd:dateTime">2012-05-02T12:25:38.000+01:00</Value> 
    <Quality></Quality> 
</Items> 
<Items ItemName="_System._ProjectTitle"> 
    <Value xsi:type="xsd:string">Job2663</Value> 
    <Quality></Quality> 
</Items> 
</RItemList> 
</ReadResponse> 
</soap:Body> 
</soap:Envelope> 

//Edited below to include correct code based on Rocket's solution below. 
$(soap).find('Items').each(function(){ 
    console.log($(this).attr('ItemName'), ':', $('Value', this).html()); 
}); 

非常感謝。

回答

1

你可以使用jQuery嗎? jQuery可以爲你解析XML,你可以使用jQuery方法遍歷它。

$(soap).find('Items').each(function(){ 
    console.log($(this).attr('ItemName'), $('Value', this).attr('xsi:type')); 
}); 

DEMO:http://jsfiddle.net/JMTHs/

+0

謝謝,火箭。太棒了。我們快到了。我們希望返回[「_System._DateTime」,「2012-05-02T12:25:38.000 + 01:00」],[「_System._ProjectTitle」,'Job2663']。如何檢索值/值標籤之間的項目? – Transistor

+0

Rocket,再次感謝指針。我想出了其餘的(所有新東西給我)。爲了清晰起見,我編輯了原文。 – Transistor

+0

不客氣!很高興我能幫上忙 :-) –