2011-05-17 84 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