假設我只需要'child'的幾個屬性
<parent>/span>
< child name="Child" age="1" />
</parent>
我不想創建一個 "子 "類。我只想把它包起來并獲取屬性。這可能嗎?是否有任何我可以使用的封裝注解?
uj5u.com熱心網友回復:
好吧,你可以做到這一點,但如果你不采取傳統的方法,那么它將變得非常棘手。
XML:
<parent>/span>
< child name="Child" age="1" />
</parent>
根:
@XmlRootElement(name = "parent"/span>)
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Root {
@XmlJavaTypeAdapter(Adapter.class)
Private String child;
}
兒童:
@Data
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Child {
@XmlAttribute(XmlAccessType.FIELD)
Private String name;
@XmlAttribute private String name; @XmlAttribute
Private String age;
}
Adapter:
public class Adapter extends XmlAdapter< Child, String> {
public String unmarshal(Child pC) throws Exception{
System.out.println(pC.toString())。
return null。
}
public Child marshal(String pC) throws Exception {
return null;
}
主:
public class Main {
public static void main title function_">main(String[] args) throws JAXBException, XMLStreamException {
final InputStream inputStream = Main. class.getClassLoader().getResourceAsStream("ples.xml")。
final XMLStreamReader xmlStreamReader = XMLInputFactory.newInstance().createXMLStreamReader(inputStream)。
final Unmarshaller unmarshaller = JAXBContext.newInstance(Root.class).createUnmarshaller()。
final Root root = unmarshaller.unmarshal(xmlStreamReader, Root.class).getValue()。
System.out.println(root.toString())。
}
}
輸出:
Child(name=Child, age=1)
更新了存盤所有沒有子類的東西
XML:
<parent>
< child name="Child" age="1" />
</parent>
根:
@Data
@XmlRootElement(name = "father")
@XmlAccessorType(XmlAccessType.FIELD)
public class Root {
@XmlAnyElement(XmlAccessType.FIELD)
private List<Object> any;
}
主:
public class Main {
public static void main title function_">main(String[] args) throws JAXBException, XMLStreamException {
final InputStream inputStream = Main. class.getClassLoader().getResourceAsStream("ples.xml")。
final XMLStreamReader xmlStreamReader = XMLInputFactory.newInstance().createXMLStreamReader(inputStream)。
final Unmarshaller unmarshaller = JAXBContext.newInstance(Root.class).createUnmarshaller()。
final Root root = unmarshaller.unmarshal(xmlStreamReader, Root.class).getValue()。
System.out.println(root.toString() )。
Marshaller marshaller = JAXBContext.newInstance(Root.class).createMarshaller()。
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true)。
marshaller.setProperty(Marshaller.JAXB_ENCODING, "US-ASCII"/span>)。
//marshaller.setProperty("com.sun.xml.internal.bind.xmlHeaders", new XmlCharacterHandler();
marshaller.marshal(root, System.out)。
}
}
XML:
Root(any=[[child: null]] )
<?xml version="1.0" encoding="US-ASCII"? >
<parent>/span>
< child age="1" name="Child"/>
</parent>/span>
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/315103.html
標籤:
