2
Geven XML文件默認值
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ExternalRequestContext [
<!ELEMENT ExternalRequestContext EMPTY>
<!ATTLIST ExternalRequestContext
requestType CDATA #REQUIRED
deepEnrichment (true | false) "false"
channelMandatory (true | false) "true">
]
>
<ExternalRequestContext requestType="News" deepEnrichment="false" />
及XStream代碼
@XStreamAlias("ExternalRequestContext")
class ERC {
private String requestType;
private boolean deepEnrichment;
private boolean channelMandatory;
}
...
XStream x = new XStream();
x.processAnnotations(ERC.class);
ERC erc = (ERC)x.fromXML(new FileReader("C:/Projects/Forwarder/Test.xml"));
x.toXML(erc, System.out);
我的瀏覽器呈現爲以下幾點:
<ExternalRequestContext requestType="News" deepEnrichment="false" channelMandatory="true" />
注意channelMandatory =「真「(瀏覽器處理了DTD指令)
而XSTREAM產生
<ExternalRequestContext>
<deepEnrichment>false</deepEnrichment>
<channelMandatory>false</channelMandatory>
</ExternalRequestContext>
這裏channelMandatory = 「假」(西河忽略了「channelMandatory(真| FALSE)「真」」 DTD指令)
我怎麼錯過?如何‘告訴’西河處理DTD說明? ,如何使DTD驗證在西河?
好!使用包裝類而不是基元類型可以指示是否在XML文件中給出了值。 然而,顯式初始化不起作用:無論其初始值如何,我都會得到channelMandatory爲false。 關於驗證:我可以讓xStream拋出一個異常,如果我用無效的(但格式良好的)XML提供它嗎? – Lopotun 2010-01-17 12:50:10