オブジェクトのリストをXMLにマーシャリングしようとしています。以下 はメソッドです:jaxbマーシャリング時のjavax.xml.bind.PropertyException
import com.sun.xml.bind.marshaller.NamespacePrefixMapper;
import javax.xml.bind.Marshaller;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
public class ItemMarshaller
{
public String marshallItems(final List<Items> items)
{
try
{
final JAXBContext context = JAXBContext.newInstance("com.project.jaxb.items");
final Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
m.setProperty("com.sun.xml.bind.namespacePrefixMapper", new NamespacePrefixMapper()
{
@Override
public String getPreferredPrefix(String uri, String suggestion, boolean requirePrefix)
{
return "";
}
});
final StringWriter writer = new StringWriter();
m.marshal(items, writer);
return writer.toString();
}
catch (final JAXBException e)
{
ErrorLogger.LOGGER.error("Marshalling failed.", e); //$NON-NLS-1$
}
return null;
}
}
私は( "com.sun.xml.bind.namespacePrefixMapper"、新NamespacePrefixMapper()m.setPropertyを呼び出すと、私は次のエラーを取得する:
今javax.xml.bind.PropertyException: name: com.sun.xml.bind.namespacePrefixMapper value: [email protected]
at javax.xml.bind.helpers.AbstractMarshallerImpl.setProperty(AbstractMarshallerImpl.java:358)
at com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.setProperty(MarshallerImpl.java:527)
内部クラスを使用する場合、 com.sun.xml.internal.bind.marshaller.NamespacePrefixMapper;
代わりに、このプロジェクトは動作しますが、内部クラスです。また、abです内部のクラスを使用する広告のアイデア、または私は言われました。
どうすればこの問題を解決できますか?