在使用Nokogiri构建XML文档时如何用破折号替换下划线?

时间:2015-10-12 15:51:20

标签: ruby xml nokogiri

我正在使用以下代码构建一个新的XML文档:

doc = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do
  reginfo {
    client_type_id client_type == :associate ? ASSOCIATE : CLIENT 
    parent_ {
      id_ client_type == :associate ? associate_id : customer_id
      client_type_id client_type == :associate ? ASSOCIATE : CLIENT  
      vsn client_type == :associate ? associate_vsn : customer_vsn
    }
  }
end

上面标记为client_type_id的标记显示在XML文件中,如client_type_id,但这不是正确的XML标记名称格式。我需要他们client-type-id

我尝试用以下代码替换该行:

:"client-type-id" client_type == :associate ? ASSOCIATE : CLIENT 

但我明白了:

syntax error, unexpected tIDENTIFIER, expecting '}'
    :"client-type-id" client_type == :associate ? ASSOCIATE : CLIENT 
                                 ^

或:

:"client-type-id" (client_type == :associate ? ASSOCIATE : CLIENT)

但我明白了:

syntax error, unexpected '(', expecting '}'
        :"client-type-id" (client_type == :associate ? ASSOCIATE : CLIENT)
                           ^

有没有办法告诉Nokogiri :: XML :: Builder:

  1. 基于每行,使用破折号作为标记名称,是否有不同的语法?
  2. 对于整个文档,在创建过程中或之后,对元素名称中的所有下划线使用破折号,以便形成格式正确的XML元素名称?

1 个答案:

答案 0 :(得分:0)

有一种奇特的方式:

RelativeLayout parentLayout = (RelativeLayout) findViewById(R.id.parent_layout);
int height = parentLayout.getHeight();
int targetWidth = (int)Math.round(height / 0.5625); //example for 16:9 ratio
ImageView imageView = new ImageView(this);
imageView.setLayoutParams(new ViewGroup.LayoutParams(
     targetWidth,
     ViewGroup.LayoutParams.MATCH_PARENT
));
parentLayout.addView(imageView);