2011-06-15 31 views
0

我有一個引入nokogiri XML節點:如何將屬性添加到一個節點,以便它是第一個

node = <word n='ab' v='cd'>something</word> 

我想增加一個屬性:

node['p']='ef' 

,但以這樣的方式它'顯示'屬性列表中的第一個,如

node = <word p='ef' n='ab' v='cd'>something</word> 

有沒有簡單的方法來做到這一點?

+1

爲什麼屬性的順序對你很重要? XML的設計方式無關緊要。 – 2011-06-15 17:46:31

+0

我把這個詞的可能'詞性'作爲屬性,順序表示確定性(得到正確位置的概率)。這樣,所有可能的第一個屬性是最可能的。然後,算法根據不同單詞如何在它們之間進行交互來過濾屬性。 – fjs6 2011-06-15 18:32:21

+1

很多人會認爲要求特定的屬性排序是一個非常糟糕的主意。您應該考慮添加可用於對它們進行排序的附加數據,或重新構建您的XML,因爲引入此要求會使人們消費它的生活變得非常困難,因爲許多XML閱讀庫都會忽略排序。 – tadman 2011-06-15 19:29:16

回答

3

我不知道任何XML序列化程序,它允許您控制屬性的順序(除非意外,依賴於產品的未公開的功能)。它應該沒關係;訂單只是美容。

當你說「順序表示確認」時,這是非常令人擔憂的,因爲當XML非常清晰地表明順序一般不會被保持時,你將屬性的順序賦予了意義。您需要重新設計您的XML以找到捕獲此信息的不同方式。

+0

感謝所有的迴應。我現在明白了,我將重新構造代碼以避免使用屬性順序。 – fjs6 2011-06-16 07:10:53

相關問題