我使用的ActiveResource消耗由管理平臺提供的REST Web服務(一個bug跟蹤工具)。這webservice的類似下面生成XML:我怎樣才能使的ActiveResource XML解析更穩定?
<custom_field name="Issue Owner" id="15">Fred Fake</custom_field>
<custom_field name="Needs Printing" id="16">0</custom_field>
<custom_field name="Review Assignee" id="17">Fran Fraud</custom_field>
<custom_field name="Released On" id="20"></custom_field>
<custom_field name="Client Facing" id="21">0</custom_field>
<custom_field name="Type" id="22">Bug</custom_field>
<custom_field name="QA Assignee" id="23"></custom_field>
<custom_field name="Company Name" id="26"></custom_field>
<custom_field name="QA Notes" id="27"></custom_field>
<custom_field name="Failed QA Attempts" id="28">2</custom_field>
然而,當的ActiveResource分析這個問題,我遍歷這些結果打印出來,我得到:
Fred Fake
0
Fran Fraud
#<Redmine::Issue::CustomFields::CustomField:0x5704e95d>
0
Bug
#<Redmine::Issue::CustomFields::CustomField:0x32fd963>
#<Redmine::Issue::CustomFields::CustomField:0x3a68f437>
#<Redmine::Issue::CustomFields::CustomField:0x407964d6>
2
這是正確的,它拋出了所有的來自任何具有值的屬性信息,但保留來自空元素的屬性信息。
不用說,這使得當你試圖找到ID 15(或其他)的有價值的東西相當困難。現在我可以通過他們的位置來引用事情,但這非常脆弱,因爲這些元素將來可能會發生變化。我認爲必須有一些方法讓ActiveResource保留屬性信息,但是因爲我沒有做任何特別的事情。 (我的ActiveResource擴展只有五行:它擴展了ActiveResource,定義了服務的URL,用戶名和密碼,就是這樣)。
那麼,有沒有人知道我可以如何讓ActiveResource不這麼奇怪地解析這個XML?
這將是很酷,如果你可以發佈的代碼片做印刷和解析。 – karlcow 2011-02-05 13:16:38