Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用名称空间进行jaxb解组_Java_Xml Parsing_Namespaces_Jaxb - Fatal编程技术网

Java 使用名称空间进行jaxb解组

Java 使用名称空间进行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,需要将其转换为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>
订单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.*;