2

I'm trying to use SimpleXML to parse an XML document (an ItemLookupResponse for a book from the Amazon Product Advertising API) which contains the following element:

<ItemAttributes>
  <Author>Shane Conder</Author>
  <Author>Lauren Darcey</Author>
  <Manufacturer>Pearson Educacion</Manufacturer>
  <ProductGroup>Book</ProductGroup>
  <Title>Android Wireless Application Development: Barnes & Noble Special Edition</Title>
</ItemAttributes>

My problem is that I don't know how to deal with the multiple possible Author elements.

Here's what I have right now for the corresponding POJO (Plain Old Java Object), keeping in mind that it's not handling the case of multiple Authors:

@Element
public class ItemAttributes {
    @Element
    public String Author;

    @Element
    public String Manufacturer;

    @Element
    public String Title;
}

(I don't care about the ProductGroup, so it's not in the class -- I'm just setting SimpleXML's strict mode to off to allow for that.)

I couldn't find an example in the documentation that corresponded with such a case. Using an ElementList with (inline=true) seemed along the right lines, but I didn't see how to do it for String (as opposed to a separate Author class, which I have no need for and don't see how it would even work).

Here's a similar question and answer, but for PHP: php - simpleXML how to access a specific element with the same name as others? I don't know what the Java equivalent would be to the accepted answer.

Thanks in advance.

John Rotenstein
  • 241,921
  • 22
  • 380
  • 470
LouieGeetoo
  • 868
  • 2
  • 11
  • 26

1 Answers1

3

N.B, this is just from reading the docs (the only question is if it should be name="Author" or entry="Author"):

@Element
public class ItemAttributes {
    @Element(inline=true, type=String.class, name="Author")
    public List<String> authors;
...
}
forty-two
  • 12,204
  • 2
  • 26
  • 36