我正在使用JAXB将xml转换为object。我手动创建类,因为WS供应商不提供我们的架构。
XML是: -
<com:DayAndTimeAvailability>
<com:DayTypes>
<com:MondayToSunday />
</com:DayTypes>
<com:OpeningHours>
<com:TwentyFourHours />
</com:OpeningHours>
</com:DayAndTimeAvailability>
我在&#34; DayTypes&#34;中感到困惑。元件。它可以有价值
<com:MondayToFriday/>,<com:Weekend/>,<com:MondayToSunday/>, <com:Monday/>,<com:Tuesday/>, <com:Wednesday/>,<com:Thursday/>, <com:Friday/>,<com:Saturday/>, <com:Sunday/>
。
我想要一个String变量,它具有基于上提元素的值。就像我在xml中得到<com:MondayToFriday/>
一样,我需要在字符串中保存值星期一 - 星期五每天24小时。
任何人都可以帮助我吗?
答案 0 :(得分:2)
如果您有xml,则无需手动创建类。 为此xml创建xsd,然后使用xjc命令生成POJO。 要将xml映射到对象,请使用
JAXBContext context = JAXBContext.newInstance(YourMainClass.class);
Unmarshaller u = context.createUnmarshaller();
yourMainClassObject= (YourMainClass) u.unmarshal(new StringReader(xml));
答案 1 :(得分:1)
我确实喜欢这个
@XmlRootElement(name="DayTypes")
public static class DayTypes{
private ElementNSImpl element;
private String value;
@XmlAnyElement
public ElementNSImpl getElement() {
return element;
}
public void setElement(ElementNSImpl element) {
String nodeName = element.getNodeName();
switch (nodeName) {
case "com:MondayToSunday":
setValue("Monday - Sunday 24 Hours a Day");
break;
case "com:MondayToFriday":
setValue("Monday - Friday 24 Hours a Day");
break;
default:
setValue(nodeName);
break;
}
this.element = element;
}
@XmlTransient
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
但我不知道这是否正确。