Java 使用名称空间进行jaxb解组
这是我的xml,需要将其转换为java。我用过jaxbJava 使用名称空间进行jaxb解组,java,xml-parsing,namespaces,jaxb,Java,Xml Parsing,Namespaces,Jaxb,这是我的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&g
<?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>
订单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>();*/
}
import java.util.ArrayList;
导入java.util.List;
导入javax.xml.bind.annotation.XmlAccessType;
导入javax.xml.bind.annotation.XmlAccessorType;
导入javax.xml.bind.annotation.XmlAttribute;
导入javax.xml.bind.annotation.xmlement;
导入javax.xml.bind.annotation.XmlRootElement;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name=“lm:Order”)
公共类订单支付{
@XmlAttribute
私有字符串Id;
@XmlAttribute
私有字符串JD;
@XmlAttribute
私有字符串帐户;
@XmlAttribute
私有字符串pCount;
/*@XmlElement
私人硕士;
@XmlElement
私有列表详细信息=新建ArrayList()*/
}
您能帮我阅读吗?目前正在阅读文件,需要作为XML字符串阅读。名称空间属性
xmlns:lm=”http://www.ae.com/Event/Load“
可能是罪魁祸首。为了指定名称空间前缀,可以将注释添加到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.*;
@是的,这是一个打字错误,代码中没有编译时错误。谢天谢地,现在没有错误了。但答案是否定的。System.out.println(order.getACount);是nullStringReader=new StringReader(“//整个xml”);jaxbContext=jaxbContext.newInstance(Order.class);解组器jaxbUnmarshaller=jaxbContext.createUnmarshaller();Order Order=(Order)jaxbUnmarshaller.unmarshal(reader);系统输出打印项次(订单)@Rosh我在XML中没有看到
aCount
属性;只有计数
属性。它们应该是一样的吗?不,那是打字错误。响应值仅为空。@Rosh所以您的意思是System.out.println(order)代码>是否为空?您是否将@XmlRootElement(name=“lm:Order”)
更改为仅@XmlRootElement(name=“Order”)
?
@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.*;