2011-06-15 21 views
0

我得到這個不錯的XML時,有在字段中的數據:軌道3 XML構建:不返回任何XML元素時,有沒有數據

<DescriptiveDetail> 
    <ProductComposition>00</ProductComposition> 
    <ProductForm>01</ProductForm> 
    <Measure> 
    <MeasureType>01</MeasureType> 
    <MeasureType>198</MeasureType> 
    <MeasureType>mm</MeasureType> 
    </Measure> 
</DescriptiveDetail> 

當沒有數據,我想獲得這:

<DescriptiveDetail> 
    <ProductComposition>00</ProductComposition> 
</DescriptiveDetail> 

但是,相反,我得到這個:

<DescriptiveDetail> 
    <ProductComposition></ProductComposition> 
    <ProductForm></ProductForm> 
    <Measure> 
    <MeasureType></MeasureType> 
    <MeasureType></MeasureType> 
    <MeasureType></MeasureType> 
    </Measure> 
</DescriptiveDetail> 

我怎麼不返回的XML元素時,有沒有數據?

(而且只是出於興趣,如果你知道,你怎麼返回自動關閉標籤,例如

<Measure/> 

這裏是我的XML構建代碼(在滿,相關位在中間):

xml.instruct!(:xml, :encoding => "ISO-8859-1") 
xml.ONIXMessage(:release=>"3.0") do 
    xml.Header do 
    xml.Sender 
     xml.SenderName 
    end 
    @isbnlist.each do |isbn| 
    xml.Product do 
     xml.RecordReference isbn.id 
     xml.NotificationType isbn.notificationtype 
     isbn.productcodes.each do |productcode| 
      xml.ProductIdentifier do 
      xml.ProductIDType productcode.idtype 
      xml.IDValue productcode.idvalue 
      end 
     end 
     xml.DescriptiveDetail do 
     xml.ProductComposition isbn.descriptivedetail_productcomposition_productcomposition 
     xml.ProductForm isbn.descriptivedetail_productcomposition_productform 
      isbn.measurements.each do |measurement| 
      xml.Measure do 
       xml.MeasureType measurement.descriptivedetail_measure_measuretype 
       xml.MeasureType measurement.descriptivedetail_measure_measurement 
       xml.MeasureType measurement.descriptivedetail_measure_measureunitcode 
      end 
      end 
     xml.TitleDetail do 
      xml.TitleType isbn.descriptivedetail_titledetail_titletype 
      xml.TitleElement do 
       xml.TitleElementLevel isbn.descriptivedetail_titledetail_titleelement_titleelementlevel 
       xml.TitlePrefix isbn.descriptivedetail_titledetail_titleelement_titleprefix 
       xml.TitleWithoutPrefix isbn.descriptivedetail_titledetail_titleelement_titlewithoutprefix 
      end 
      xml 
     end 
     end 
     end 
    end 
    end 

回答

0

你試過只是爲了檢查是否@isbnlist是空的,如果是這樣,使用條件語句要麼通過所有元素重複或只是打印出來的短/空versio N +

+0

謝謝你的想法。問題是,@isbnlist中的一些屬性會有數據,有些則不會。 (@isbnlist Isbn.all) – snowangel 2011-06-15 13:16:24

+0

那麼,另一種方法是檢查每行是否屬性有數據: xml.ProductIDType productcode.idtype除非productcode.idtype.nil? – yagooar 2011-06-15 14:51:25

+0

當然!非常感謝@yagooar。 – snowangel 2011-06-15 14:59:50