Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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
使用元素“将XML编组为Java”;“任何属性”;及;任何;在XSD中_Java_Xml_Xsd_Jaxb_Marshalling - Fatal编程技术网

使用元素“将XML编组为Java”;“任何属性”;及;任何;在XSD中

使用元素“将XML编组为Java”;“任何属性”;及;任何;在XSD中,java,xml,xsd,jaxb,marshalling,Java,Xml,Xsd,Jaxb,Marshalling,我被这个XSD和JAXB问题困住了。。。请帮帮我 我需要实现的是完全生成下面的xml <?xml version="1.0"?> <GovTalkMessage xmlns="http://www.govtalk.gov.uk/CM/envelope"> .... <Body> <IRenvelope xmlns="http://www.govtalk.gov.uk/taxation/PAYE/RTI/FullPa

我被这个XSD和JAXB问题困住了。。。请帮帮我

我需要实现的是完全生成下面的xml

<?xml version="1.0"?>
<GovTalkMessage xmlns="http://www.govtalk.gov.uk/CM/envelope">
        ....
    <Body>
        <IRenvelope xmlns="http://www.govtalk.gov.uk/taxation/PAYE/RTI/FullPaymentSubmission/15-16/1">
            ....
        </IRenvelope>
    </Body>
</GovTalkMessage>
我只看到我玩过的getAny和getOtherAttributes,但它们不起作用

    //Body
    Body body = new Body();
    IRenvelope irEnvelope = new IRenvelope();
    body.getAny().add(irEnvelope);
    govTalkMessage.setBody(body);
我尝试使用从FullPaymentSubmission-2016-v1-2.xsd生成的IRenvelope java类实例设置getAny,但出现以下错误:

错误:

javax.xml.bind.MarshalException
 - with linked exception:
[com.sun.istack.internal.SAXException2: class com.rti.rim2016.v1_2.fps.generated.IRenvelope nor any of its super class is known to this context.
javax.xml.bind.JAXBException: class com.upraxis.rti.rim2016.v1_2.fps.generated.IRenvelope nor any of its super class is known to this context.]
    at com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:311)
    at com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:236)
    at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:116)
我希望有人能帮助我阐明如何正确解决这个问题

答复 您只需在以冒号分隔的
字符串
上使用两个生成的包创建
JAXBContext

JAXBContext jc = JAXBContext.newInstance("com.rti.rim2016.v1_2.fps:com.rti.rim2016.v1_2.envelope");
演示代码 然后当我跑步时:

import javax.xml.bind.*;
import com.rti.rim2016.v1_2.fps.*;
import com.rti.rim2016.v1_2.envelope.GovTalkMessage;
import com.rti.rim2016.v1_2.envelope.GovTalkMessage.Body;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance("com.rti.rim2016.v1_2.fps:com.rti.rim2016.v1_2.envelope");

        GovTalkMessage govTalkMessage = new GovTalkMessage();

        Body body = new Body();
        IRenvelope irEnvelope = new IRenvelope();
        body.getAny().add(irEnvelope);
        govTalkMessage.setBody(body);

        Marshaller marshaller = jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.marshal(govTalkMessage, System.out);
    }

}
我得到以下输出:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:GovTalkMessage xmlns="http://www.govtalk.gov.uk/taxation/PAYE/RTI/FullPaymentSubmission/15-16/1" xmlns:ns2="http://www.govtalk.gov.uk/CM/envelope" xmlns:ns3="http://www.w3.org/2000/09/xmldsig#">
    <ns2:Body>
        <IRenvelope/>
    </ns2:Body>
</ns2:GovTalkMessage>

import javax.xml.bind.*;
import com.rti.rim2016.v1_2.fps.*;
import com.rti.rim2016.v1_2.envelope.GovTalkMessage;
import com.rti.rim2016.v1_2.envelope.GovTalkMessage.Body;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance("com.rti.rim2016.v1_2.fps:com.rti.rim2016.v1_2.envelope");

        GovTalkMessage govTalkMessage = new GovTalkMessage();

        Body body = new Body();
        IRenvelope irEnvelope = new IRenvelope();
        body.getAny().add(irEnvelope);
        govTalkMessage.setBody(body);

        Marshaller marshaller = jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.marshal(govTalkMessage, System.out);
    }

}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:GovTalkMessage xmlns="http://www.govtalk.gov.uk/taxation/PAYE/RTI/FullPaymentSubmission/15-16/1" xmlns:ns2="http://www.govtalk.gov.uk/CM/envelope" xmlns:ns3="http://www.w3.org/2000/09/xmldsig#">
    <ns2:Body>
        <IRenvelope/>
    </ns2:Body>
</ns2:GovTalkMessage>