这是我的xml,需要将其转换为Java。我用过jaxb
<?xml version="1.0"?> <lm:order Id="PLG24M240U" JD="" aCount="2" SUCount="1" xmlns:lm="http://www.ae.com/Event/Load"> <lm:master> <lm:ID>3</lm:ID> <lm:Number>313</lm:Number> <lm:ANumber>323</lm:ANumber> </lm:master> <lm:detail> <lm:ID>3</lm:ID> <lm:Number>3131</lm:Number> <lm:ANumber>3232</lm:ANumber> </lm:detail> <lm:detail> <lm:ID>3</lm:ID> <lm:Number>3131</lm:Number> <lm:ANumber>3232</lm:ANumber> </lm:detail> <lm:detail> <lm:ID>3</lm:ID> <lm:Number>313</lm:Number> <lm:ANumber>323</lm:ANumber> </lm:detail> </lm:order>
并引发以下异常javax.xml.bind.UnmarshalException:意外元素(uri:“ http://www.ae.com/Event/Load ”,本地:“ Order”)。期望的元素是<{} lm: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<Detail> details = new ArrayList<Detail>();*/ }
您能否也帮助我阅读,当前正在读取文件,需要读取为XML String。
名称空间属性xmlns:lm="http://www.ae.com/Event/Load"可能是此处的罪魁祸首。为了指定名称空间前缀,可以将@XmlSchema注释添加到package- info.java文件中,如下所示:
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.*;