1
我正在使用@XmlTransient
來隱藏輸出XML文件中的某些字符串。它在編組和XML很好的時候工作正常。
但是,當我解組XML時,@XmlTransient
標記的值顯示爲空。@XmlTransient標記的值在解組時返回null
我正在使用@XmlTransient
來隱藏輸出XML文件中的某些字符串。它在編組和XML很好的時候工作正常。
但是,當我解組XML時,@XmlTransient
標記的值顯示爲空。@XmlTransient標記的值在解組時返回null
什麼@XmlTransient
是否
@XmlTransient
所以從兩個編組和解組排除資源標記爲未映射。
你可以做
如果你只是想從編組你可以考慮使用XmlAdapter
XmlAdapter排除值( StringAdapter)
XmlAdapter
將總是返回""
作爲編組操作,並且JAXB實現將返回一個空元素。如果您使用EclipseLink MOXy作爲JAXB實現,則可以返回null以完全消除節點(請參閱:http://blog.bdoughan.com/2012/04/binding-to-json-xml-handling-null.html)。
import javax.xml.bind.annotation.adapters.XmlAdapter;
public class StringAdapter extends XmlAdapter<String, String> {
@Override
public String marshal(String string) throws Exception {
return null;
}
@Override
public String unmarshal(String string) throws Exception {
return string;
}
}
人
import javax.xml.bind.annotation.*;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
@XmlRootElement(name="Person")
@XmlAccessorType(XmlAccessType.FIELD)
public class Person {
String name;
String address;
@XmlJavaTypeAdapter(StringAdapter.class)
String password;
}
的input.xml
<Person>
<name> some name </name>
<password> some password </password>
<address> some address </address>
</Person>
演示
import java.io.File;
import javax.xml.bind.*;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Person.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
File xml = new File("src/forum14231799/input.xml");
Person person = (Person) unmarshaller.unmarshal(xml);
System.out.println(person.password);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(person, System.out);
}
}
輸出
some password
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Person>
<name> some name </name>
<address> some address </address>
<password></password>
</Person>
在編組中StringAdapter馬歇爾方法被調用。但是,雖然未調用unmarshal方法未被調用。可能是什麼問題。 –
@AnandB - 只有在對應於該屬性的XML中有內容時纔會調用它。查看期望的內容的最簡單方法是解鎖用於元帥操作的屬性並生成示例文檔。 –
你是否建議我應該在StringAdapter的元帥方法中返回String而不是null,並驗證輸出xml中的內容 –