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.*;