我有一个对象层次结构,我希望使用“import javax.xml.bind.Marshaller”将Java对象转换为xml。我的java类文件在“Cp1252”中编码,我无法改变它。
在我将属性设置为“München”并将其转换为xml之后,结果是M?nchen,因此编码的内容是错误的:-)
在创建我的java类文件时,一切似乎都没问题,因为getCity期间的值看起来很好。在由XMLDirectMapping.setAttributeValueInObject调用的setCity-Method中,vity值已经被破坏:“Mnchen”。
我尝试使用Marshaller.JAXB_ENCODING属性设置了几个不同的值,但由于这是输出编码,所以我没有这个工作。
我的假设是错误必须与我的虚拟机的默认编码或库的编码有关。但是因为我不知道如果你们中的某个人之前遇到过这个问题会很棒。
如果您需要任何进一步的信息来解决它,请告诉我。只是因为这样的问题,不花半天或更长时间真的很棒。
由于
答案 0 :(得分:1)
如果没有代码,即使你的意思是正确实现,也很难确定一个可能的小错误。
首先我想建议您使用UTF-8作为编码,因为它更标准,如果我没有错误更多跨平台,但这是默认值。
其次,我会检查生成的文件是否确实在其xml标签中包含使用该编码进行编码的信息。
第三,您可以使用系统属性jaxb.encoding
更改编码所以用-Djaxb.encoding = Cp1252启动你的应用程序而不是Marshaller.JAXB_ENCODING!
答案 1 :(得分:1)
注意:我是EclipseLink JAXB (MOXy)主管,是JAXB (JSR-22)专家组的成员。
在创建我的java类文件时,一切似乎都没问题 getCity期间的值看起来很好。在setCity-Method中,调用 通过XMLDirectMapping.setAttributeValueInObject,vity值为 已经坏了:“Mnchen”。
基于此语句,我可以告诉您正在使用JAXB(JSR-222)的EclipseLink MOXy实现。
您在哪里看到该值编码错误?有时,值似乎在编辑器/调试器中编码不正确,但实际上它是正确的。如果您将结果编组到文件中,您是否得到了正确的结果?