私は現在JAXBアノテーションを使用していますが、これはほとんどの場合有効です。しかし、私はアノテーションを処理/作成する方法を理解できない何かを見つけました。私は、次のXMLを持っている:ノードにも内部ノードがある場合、ノードの値をマップする方法はありますか?
<animals>
<animal>
cat
<age>5</age>
<color>red</color>
</animal>
</animals>
は、私はちょうど「5
」または「red
」をフェッチすることなく、そのXMLのうち、「cat
」を得ることができる方法はありますか?
@XmlRootElement(name = "animals")
public class Animal {
@XmlElement(name = "animal")
String type;
}
しかし、私はこれをアンマーシャリングするとき、私はちょうど空の文字列を取得します:ここで
は、私がこれまで持っているものです。
助けていただけたら幸いです! 、のcontent
分野今
@XmlRootElement(name = "animals")
public class Animals {
@XmlElement(name = "animal")
List<Animal> animals;
}
public class Animal {
@XmlMixed
List<Object> content;
}
:
@XmlRootElement(name = "animals")
private static class Animals {
@XmlElement(name = "animals")
String animalType;
}
// This code is in "main"
final String animalsXml = "<animals><animal>cat<color>red</color><age>5</age></animal></animals>";
JAXBContext context = JAXBContext.newInstance(Animals.class);
Unmarshaller um = context.createUnmarshaller();
ByteArrayInputStream bais = new ByteArrayInputStream(animalsXml.getBytes("UTF-8"));
Animals animals = (Animals)um.unmarshal(bais);
boolean animalIsCat = animals.animalType == null ? false : animals.animalType.equalsIgnoreCase("cat");
assert animalIsCat;
// end code in main
アンマーシャリングの仕方を教えてください。 – mkro
mkro、私は私が使用している完全なコードを追加しました。ありがとう – Polaris878