JAXB javax.xml.bind.PropertyException
当我试图读取包含一些日文字符的XML文件时,出现以下错误JAXB javax.xml.bind.PropertyException,jaxb,Jaxb,当我试图读取包含一些日文字符的XML文件时,出现以下错误 javax.xml.bind.PropertyException: jaxb.encoding at javax.xml.bind.helpers.AbstractUnmarshallerImpl.getProperty(AbstractUnmarshallerImpl.java:360) at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.getPr
javax.xml.bind.PropertyException: jaxb.encoding
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.getProperty(AbstractUnmarshallerImpl.java:360)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.getProperty(UnmarshallerImpl.java:423)
at com.jaxb.JAXBTest.main(JAXBTest.java:23)
enter code here
包com.jaxb
import java.io.FileReader;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
public class JAXBTest
{
public static void main(String args[])
{
try
{
JAXBContext context = JAXBContext.newInstance(com.pain.jaxb.ver2.Document.class);
Unmarshaller um = context.createUnmarshaller();
um.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
com.pain.jaxb.ver2.Document PainTransferList2 = (com.pain.jaxb.ver2.Document) um.unmarshal(new FileReader("C:/WorkArea/JAXB/src/com/pain/messages/APXSEPAS_510812_1.XML"));
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
请给我一些建议
谢谢
Rafi您正在
Umarshaller
上设置Marshaller
属性:
Unmarshaller um = context.createUnmarshaller();
um.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
只能在Unmarshaller
上设置Unmarshaller
属性
请删除
setProperty
并重试。是否可以在不设置JAXB\u编码属性的情况下重试?我认为它只用于编写(编组)XML。@Rafi-有关JAXB属性的更多信息,请参阅:感谢您的回复。我正在使用JAXB编写一个通用XML解析器,用于解析ISO20022信用转账XML文件。我已经使用内置JAXB工具生成了所有POJO,为所有ISO版本提供了XSD。我正在使用JAXB编写一个通用XML解析器,用于解析ISO20022信用转账XML文件。我使用内置JAXB工具生成了所有POJO,为所有ISO版本提供了XSD。pain.001.001.01.xsd/pain.001.001.02.xsd/pain.001.001.03.xsd。我已经创建了一个单一的包结构,这样我就只能创建java对象的唯一元素。现在在运行时,我为JAXBContext context=JAXBContext.newInstance(DocumentVer01.class)提供了不同的文档类;每个版本的文档类都不同。嗨,我在同一个论坛上找到了这个问题的答案。