Как создать XML с помощью Nokogiri Builder - PullRequest
1 голос
/ 22 марта 2019

Я пытаюсь создать 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 генерировался в правильном формате.

1 Ответ

3 голосов
/ 22 марта 2019

следующий код Нокогири:

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>

Это то, что вы искали?

...