fichier XML GevenValeur par défaut de DTD dans xStream
<?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" />
et le code 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);
Mon navigateur, il rend comme suit:
<ExternalRequestContext requestType="News" deepEnrichment="false" channelMandatory="true" />
Notez que channelMandatory = "true " (navigateur traité l'instruction DTD)
tout xStream produit
<ExternalRequestContext>
<deepEnrichment>false</deepEnrichment>
<channelMandatory>false</channelMandatory>
</ExternalRequestContext>
Ici channelMandatory = "false" (xStream ignoré les « channelMandatory (true | false) "true" » instruction DTD)
Que dois-je manquer? Comment "dire" xStream pour traiter les instructions DTD? Et comment puis-je activer la validation DTD dans xStream?
Très bien! L'utilisation d'une classe wrapper au lieu du type primitif peut indiquer si une valeur a été donnée dans le fichier XML. initialisation explicite, cependant, ne fonctionne pas: je reçois channelMandatory est fausse quelle que soit sa valeur initiale. En ce qui concerne la validation: puis-je faire xStream de lancer une exception si je nourris avec invalides (mais bien formé) XML? – Lopotun