小编bun*_*n92的帖子

jaxb编组时出现javax.xml.bind.PropertyException

我试图将对象列表编组为xml。方法如下:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我调用m.setProperty(“ com.sun.xml.bind.namespacePrefixMapper”,新的NamespacePrefixMapper()时,出现以下错误:

javax.xml.bind.PropertyException: name: …
Run Code Online (Sandbox Code Playgroud)

java xml jaxb marshalling maven

5
推荐指数
1
解决办法
5047
查看次数

标签 统计

java ×1

jaxb ×1

marshalling ×1

maven ×1

xml ×1