je le code XML suivant:Impossible d'analyser la propriété xml vide avec l'attribut
<prog>
<prop1 attr="attr"> </prop1>
<prop2>some</prop2>
</prog>
je la classe suivante pour le représenter:
@JsonIgnoreProperties(ignoreUnknown = true)
@JacksonXmlRootElement(localName = "prog")
public class Prog {
@JacksonXmlProperty(localName = "prop1")
private String prop1;
@JacksonXmlProperty(localName = "prop2")
private String prop2;
//getters, setters
}
Mais il échoue avec l'erreur suivante: Could not read document: Can not instantiate value of type [simple type, class com.xxx.xxx.entities.ro.Prog] from String value ('some'); no single-String constructor/factory method\n at [Source: [email protected]; line: 18, column: 36]
Les xmls suivants peuvent être bien analysées (en utilisant la classe ci-dessus):
sans attribut
<prog>
<prop1> </prop1>
<prop2>some</prop2>
</prog>
prop1 vide (au lieu des espaces)
<prog>
<prop1 attr="attr"></prop1>
<prop2>some</prop2>
</prog>
pas vide prop1
<prog>
<prop1 attr="attr"> g</prop1>
<prop2>some</prop2>
</prog>
Est-ce que XML d'origine valide? Et comment puis-je l'analyser?
En fait, je besoin de sauter attr
, mais j'ai essayé aussi de le représenter comme objet:
@JsonIgnoreProperties(ignoreUnknown = true)
public class XmlElement {
@JacksonXmlText
private String value;
//getters, setters
}
MISE À JOUR: J'invoquons l'analyse tout en utilisant les contrôleurs SpringMVC, mais il reproduit aussi avec:
String xml = "<prog>" +
"<prop1 attr=\"att1\"> </prop1>" +
"<prop2>some</prop2>" +
"</prog>";
ObjectMapper xmlmapper = new XmlMapper();
Prog prog = xmlmapper.readValue(xml, Prog.class);
Afficher aussi le code comment appelez-vous analyseur. – Andremoniy
@Andremoniy J'ai mis à jour ma question –