如何使用Nokogiri Builder生成XML



我正在尝试使用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>```

我无法产生弹性菲尔德。我正在尝试以下代码。

 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>

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

以下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>

是您要寻找的吗?

最新更新