Ruby:如何将结构的某些元素限制为某些值,并在XMl解析期间使某些元素成为必需元素

时间:2013-12-26 15:59:26

标签: ruby xml excel struct

我创建了一个结构,它将存储我使用Nokogiri从XML解析的一些信息,以及在将结构导出到Excel并且用户编辑'spec'之后输入的一些信息。我需要在XML中的信息是第一个属性:type,另一个是用户在导出到Excel后将编辑的信息。

class Spec < Struct.new(
:trace-id,
:ip-pdm,    # exact IP name
:ip,        # human consumable IP name 
:parameter,
:symbol,
:min,
:max,
:typ,
:unit,
:notes,
:type,
:guaranteed-by, # acceptable values are 'ATE','BENCH','PROXY','DESIGN','CONSTRUCTION','SIMULATION'
:en-gate,
:en-final_test,
:en-probe,
:un-testable,
:disposition-required,
:pe-notes,
:te-notes,
:de-notes,
:qa-notes,
:ate-limits_reversed,
:last_revised );

我的问题的第二部分是,是否可以预先定义某些元素的有效值,例如:guarantee-by。正如您在代码注释中所看到的,我们只希望在用户输入数据时输入某些值。一般用户会在excel中输入数据,但是一些超级用户可能会通过Ruby创建结构。

提前thx!

2 个答案:

答案 0 :(得分:1)

嗯,可以使用XSD架构来验证xml数据。 快速搜索会为此页面提供您使用的库:

http://nokogiri.org/Nokogiri/XML/Schema.html

答案 1 :(得分:0)

不使用Structs,但您可以使用例如virtus gem来创建一些带验证的基本模型。