2011-06-15 29 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

相关问题