如何使用nokogiri构建器生成xml

问题描述 投票:1回答:1

我正在尝试使用rails中的nokogiri构建一个xml文件。 xml具有以下格式。

<ServiceIncident>
  <Incident>
    <Abstract>linux_bpac_endpoint_scan_v01</Abstract>
    <Description>host=endpoint01.t00.com</Description>
    <FlexFields>
      <FlexField mappedTo="event_class">1</FlexField>
      <FlexField mappedTo="ITEM">t00-bpac:endpoint01.t00.com:linux_bpac_endpoint_scan_v01</FlexField>
      <FlexField mappedTo="sr_params">{"host":"endpoint01.t00.com"}</FlexField>
      <FlexField mappedTo="sr_id">{"REQUEST_ID":"100682"}</FlexField>
      <FlexField mappedTo="sr_tool">bpac</FlexField>
      <FlexField mappedTo="service_state">1</FlexField>
      <FlexField mappedTo="host_state">1</FlexField>
      <FlexField mappedTo="service_type">SR</FlexField>
    </FlexFields>
  </Incident>
</ServiceIncident>```

我无法生成FlexField。我正在尝试下面的代码。

 require 'nokogiri'

builder = Nokogiri::XML::Builder.new do |xml|
    xml.ServiceIncident {
      xml.Incident {
       xml.FlexFields {
         xml.FlexField("mappedTo" => "event_class") { '1' }
       }
      }
    }
end

puts builder.to_xml

这就是我得到的。

<?xml version="1.0"?>
<ServiceIncident>
  <Incident>
    <FlexFields>
      <FlexField mappedTo="event_class"/>
    </FlexFields>
  </Incident>
</ServiceIncident>

我无法在mappedTo字段后生成值。能否请您在代码中建议需要更新的内容,以便以正确的格式生成xml。

ruby-on-rails ruby nokogiri
1个回答
3
投票

以下Nokogiri代码:

builder = Nokogiri::XML::Builder.new do |xml|
  xml.ServiceIncident {
    xml.Incident {
     xml.FlexFields {
       xml.FlexField('1', "mappedTo" => "event_class")
     }
    }
  }
end

产品:

<?xml version=\"1.0\"?>
<ServiceIncident>
  <Incident>
    <FlexFields>
      <FlexField mappedTo=\"event_class\">1</FlexField>
    </FlexFields>
  </Incident>
</ServiceIncident>

这是你在找什么?

© www.soinside.com 2019 - 2024. All rights reserved.