1

I have a problem. I have the following class to parse my XML to:

[XmlRoot(ElementName = "picture")]
public class SetPicture
{
    [XmlElement(ElementName = "id")]
    public string Id { get; set; }
    [XmlElement(ElementName = "name")]
    public string Name { get; set; }
    [XmlElement(ElementName = "size")]
    public string Size { get; set; }
    [XmlElement(ElementName = "price")]
    public string Price { get; set; }
    [XmlElement(ElementName = "quantity")]
    public string Quantity { get; set; }
    [XmlElement(ElementName = "sizes")]
    public List<Size> Sizes { get; set; }
    [XmlIgnore]
    public ImageSource imageSource { get; set; }
}

[XmlRoot(ElementName = "set")]
public class Set
{
    [XmlElement(ElementName = "name")]
    public string Name { get; set; }
    [XmlElement(ElementName = "price")]
    public string Price { get; set; }
    [XmlElement(ElementName = "pictures")]
    public List<SetPicture> Pictures { get; set; }
}

[XmlRoot(ElementName = "sets")]
public class Sets
{
    [XmlElement(ElementName = "set")]
    public List<Set> Set { get; set; }
}

[XmlRoot(ElementName = "data")]
public class Data
{
    [XmlElement(ElementName = "sets")]
    public Sets Sets { get; set; }
}

And I receive the following XML:

<data>
   <sets>
      <set>
         <name>Set A</name>
         <price>13.9</price>
         <pictures>
            <picture>
               <id>4</id>
               <name>Potret2.jpg</name>
               <size>13 x 18 mat</size>
               <price>6.95</price>
               <quantity>2</quantity>
            </picture>
            <picture>
               <id>5</id>
               <name>Potret2Pasfoto.jpg</name>
               <size>13 x 18 mat</size>
               <price>6.95</price>
               <quantity>1</quantity>
            </picture>
         </pictures>
      </set>
   </sets>
</data>

But after parsing the XML to the Class, I get an empty List<SetPicture> Pictures. I think I know what is going wrong, because I parse the tag <pictures> to the list, but I need to parse the elements <picture> to the list.

How can I fix this?

2
  • [XmlElement(ElementName = "pictures")] to [XmlElement(ElementName = "picture")] Commented Feb 5, 2020 at 12:15
  • Nope, already tried that, but that still returns me an empty list Commented Feb 5, 2020 at 12:21

1 Answer 1

1

Method 1 - Change the Set class. Create new class with Pictures having list of Picture

[XmlRoot(ElementName = "set")]
public class Set
{
    [XmlElement(ElementName = "name")]
    public string Name { get; set; }
    [XmlElement(ElementName = "price")]
    public string Price { get; set; }
    [XmlElement(ElementName = "pictures")]
    public Pictures Pictures { get; set; }
}

[XmlRoot(ElementName = "pictures")]
public class Pictures
{
    [XmlElement(ElementName = "picture")]
    public List<SetPicture> Picture { get; set; }
}

Method 2 - Change the XmlElement to XmlArray

[XmlRoot(ElementName = "set")]
public class Set
{
    [XmlElement(ElementName = "name")]
    public string Name { get; set; }
    [XmlElement(ElementName = "price")]
    public string Price { get; set; }
    [XmlArray("pictures")]
    [XmlArrayItem("picture", typeof(SetPicture))]
    public List<SetPicture> Pictures { get; set; }
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.