0

次のxmlを処理しようとしています:

<?xml version="1.0" encoding="UTF-8"?>
<operation name="GET_NOTES">
  <result>
    <status>Success</status>
    <message>Notes details fetched successfully</message>
  </result>
<Details>
  <Notes>
    <Note URI="http://something/24/notes/302/">
      <parameter>
        <name>ispublic</name>
        <value>false</value>
      </parameter>
      <parameter>
        <name>notesText</name>
        <value>Note added to the request</value>
      </parameter>
      ...
    </Note>
    ...
  </Notes>
<Details>
</operation>

これには役に立たないものがたくさんあるので、次のようなものにマッピングしようとしています:

public class Notes {
  public List<Note> notes;
}

public class Note {
  public String notesText; //value of parameter with name notesText
  public Boolean isPublic; //value of parameter with name ispublic
}

これは JAXB で可能ですか?

4

1 に答える 1

0

JAXB は、Bean に存在しない xml 要素を単純に無視します。または、@XmlElement の代わりに @XmlTransient でフィールドにアノテーションを付けた場合もスキップされます。

あなたの場合、Notes、note、および parameter の 3 つのクラスを記述する必要があります。

@XmlRootElement(name="Notes")
public class Notes {
  public List<Note> notes;
}

@XmlRootElement(name="Note")
public class Note {
 public parameter param;
}

@XmlRootElement(name="parameter")
public class parameter {
  public String name; //value of parameter with name notesText
  public Boolean value; //value of parameter with name ispublic
}
于 2013-06-24T16:52:59.483 に答える