jaxb unmarshalling with namespace

这是我的xml,需要将其转换为java。 我用过jaxb

   3 313 323   3 3131 3232   3 3131 3232   3 313 323   

抛出以下exceptionjavax.xml.bind.UnmarshalException:意外元素(uri:“ http://www.ae.com/Event/Load ”,local:“Order”)。 预期的元素是

这是我的解组代码

 jaxbContext = JAXBContext.newInstance(Order.class); Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); Order order = (Order) jaxbUnmarshaller.unmarshal(file); System.out.println(order ); 

订购Pojo课程

 import java.util.ArrayList; import java.util.List; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement(name = "lm:Order") public class OrderPay { @XmlAttribute private String Id; @XmlAttribute private String JD; @XmlAttribute private String aCount; @XmlAttribute private String pCount; /*@XmlElement private Master master; @XmlElement private List details = new ArrayList();*/ } 

你能帮我读一下吗,目前通读文件,需要读作XML字符串。

命名空间属性xmlns:lm="http://www.ae.com/Event/Load"可能是这里的罪魁祸首。 为了指定名称空间前缀,您可以将@XmlSchema批注添加到package-info.java文件中,如下所示:

 @XmlSchema( namespace="http://www.ae.com/Event/Load", elementFormDefault=XmlNsForm.QUALIFIED), xmlns={@XmlNs(prefix="lm", namespaceURI="http://www.ae.com/Event/Load")}) package your.package; import javax.xml.bind.annotation.*;