2011-05-17 83 views
1

我有以下類:XML序列化 - 忽略父節點

public class product 
    { 
     public string name { get; set; } 

     [XmlElement("AreaImageCaption")] 
     public List<AreaImageCaption> AreaImageCaptions { get; set; } 

     [XmlElement("image")] 
     public List<string> images { get; set; } 
    } 

    public class AreaImageCaption 
    { 
     public string area_image { get; set; } 
     public string area_caption { get; set; } 
    } 

當我序列,它輸出以下XML:

<?xml version="1.0"?> 
    <products> 
     <product> 
      <name>100</name> 
      <AreaImageCaption> 
       <area_image>image1</area_image> 
       <area_caption>caption1</area_caption> 
      </AreaImageCaption> 
      <AreaImageCaption> 
       <area_image>image2</area_image> 
       <area_caption>caption2</area_caption> 
      </AreaImageCaption> 
      <image>img1.jpg</image> 
      <image>img2.jpg</image> 
     </product> 
    </products> 

但我需要它來隱藏「AreaImageCaption」節點,所以它看起來像這樣:

<?xml version="1.0"?> 
<products> 
    <product> 
     <name>100</name> 

     <area_image>image1</area_image> 
     <area_caption>caption1</area_caption> 
     <area_image>image2</area_image> 
     <area_caption>caption2</area_caption> 

     <image>img1.jpg</image> 
     <image>img2.jpg</image> 
    </product> 
</products> 

有關如何完成此操作的任何想法?

感謝

+0

你確定它輸出了你顯示的XML嗎?這兩個元素之間沒有「AreaImageCaption」關閉和開放節點嗎? – 2011-05-17 11:16:54

+0

是的,你是對的。它的2個元素周圍有一個AreaImageCaption標籤。我剛剛編輯了代碼。有關如何隱藏它的任何想法? – user441365 2011-05-17 11:27:50

+0

@ user441365,這個標籤是有目的的。如果將其刪除,則不再能夠區分列表中的不同元素。 – 2011-05-17 12:36:10

回答

0

只爲序列化的緣故,創建像你images一個兩個屬性:

[XmlElement("area_caption")] 
public List<string> area_captions 
{ 
    get 
    { 
     return (from item in AreaImageCaptions select item.area_caption).ToList(); 
    } 
} 
[XmlElement("area_image")] 
public List<string> area_images 
{ 
    get 
    { 
     return (from item in AreaImageCaptions select item.area_image).ToList(); 
    } 
} 

您還需要標記您的AreaImageCaptions[XmlIgnore] attrbute以避免重複條目。

+0

嗯,這將使XML標籤以另一種順序出現(所有標題,然後是所有圖像)。 – Zruty 2011-05-17 11:36:32

+0

這不會使它顯示所有的area_captions,然後顯示所有的area_images,而不是將它們配對在一起? – user441365 2011-05-17 11:41:01