だから私は今、私もそれがjackson-dataformat-xml-2.3.0.jar
だ使っXMLシリアル化/逆シリアル化ののためにそれを使用しようとしています、今uptil正常JSONのシリアライズ/デシリアライゼーションのためにジャクソンを使用しています。jackson-dataformat-xmlカスタムルート要素を使用したXMLの直列化復元?
私は正常に働いていたStudent
クラスに私のJSON(接頭辞でルート名を持つ)をデシリアライズする
objectmapper.reader(Student.class).withRootName("prefix:student").readValue(jsonString)
を使用していました。 Student
に今、私は(接頭辞でルート名を持つ)私のXML文字列をデシリアライズしようとしています
:
XML:
<prefix:student>
<name>
Jack Jones
</name>
<id>1</id>
</prefix:student>
マイPOJO:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"name",
"id",
....
})
@XmlRootElement(name = "student")
public class Student
{
protected String name;
BigInteger id;
..........................
}
XmlMapper
をで使用していますこのよう:
xmlMapper.reader(Student.class).withRootName("prefix:student").readValue(xmlString)
私は、次の例外を取得:
java.io.IOException: com.ctc.wstx.exc.WstxParsingException: Undeclared namespace prefix "prefix"
at [row,col {unknown-source}]: [1,9]
at com.fasterxml.jackson.dataformat.xml.util.StaxUtil.throwXmlAsIOException(StaxUtil.java:24)
at com.fasterxml.jackson.dataformat.xml.XmlFactory._createParser(XmlFactory.java:473)
at com.fasterxml.jackson.dataformat.xml.XmlFactory._createParser(XmlFactory.java:26)
at com.fasterxml.jackson.core.JsonFactory.createParser(JsonFactory.java:844)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2091)
Caused by: com.ctc.wstx.exc.WstxParsingException: Undeclared namespace prefix "prefix"
at [row,col {unknown-source}]: [1,9]
at com.ctc.wstx.sr.StreamScanner.constructWfcException(StreamScanner.java:606)
at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java:479)
at com.ctc.wstx.sr.InputElementStack.resolveAndValidateElement(InputElementStack.java:507)
at com.ctc.wstx.sr.BasicStreamReader.handleStartElem(BasicStreamReader.java:2977)
at com.ctc.wstx.sr.BasicStreamReader.handleRootElem(BasicStreamReader.java:2098)
at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2078)
at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1134)
at com.fasterxml.jackson.dataformat.xml.XmlFactory._initializeXmlReader(XmlFactory.java:581)
at com.fasterxml.jackson.dataformat.xml.XmlFactory._createParser(XmlFactory.java:471)
... 6 more
私はカスタムのルート名を持つXMLデシリアライズのために何をする必要があります?
あなたのルート要素名はここで定義されているように 'student'ではありません:' @XmlRootElement(name = "student") '! –
@ My-Name-Is:質問を編集しました。基本的には、ルート名の中に名前空間接頭辞があります。したがって、 'student'は' prefix:student'になります。 –