Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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 JAXB:所有元素的特定名称空间前缀_Xml_Xml Namespaces_Jaxb2 - Fatal编程技术网

Xml JAXB:所有元素的特定名称空间前缀

Xml JAXB:所有元素的特定名称空间前缀,xml,xml-namespaces,jaxb2,Xml,Xml Namespaces,Jaxb2,我也有同样的问题: 但是,我必须使用特定的名称空间。然后我将package-info.java更改为: @XmlSchema( namespace = "www.example.com/a", elementFormDefault = XmlNsForm.UNQUALIFIED, xmlns={@XmlNs(prefix="pre", namespaceURI="www.example.com/a")}) import javax.xml.bind.annotation.XmlNs; impo

我也有同样的问题:

但是,我必须使用特定的名称空间。然后我将package-info.java更改为:

@XmlSchema(
namespace = "www.example.com/a",
elementFormDefault = XmlNsForm.UNQUALIFIED,
xmlns={@XmlNs(prefix="pre", namespaceURI="www.example.com/a")})

import javax.xml.bind.annotation.XmlNs;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;
我通过以下方式执行示例:

public class Test {
public static void main(String[] args) 
        throws JAXBException, XMLStreamException, FactoryConfigurationError {
    ObjectFactory o = new ObjectFactory();
    Login l = o.createLogin();
    l.setPassword("abc");
    l.setUsername("abc");
    JAXBContext jc = JAXBContext.newInstance(l.getClass());

    Marshaller m = jc.createMarshaller();
    m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
    m.marshal(l, System.out);
}
}
但是,我的结果的前缀是ns2,而不是我在package info中设置的pre:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:Login xmlns:ns2="www.example.com/a">
    <username>abc</username>
    <password>abc</password>
</ns2:Login>
如果是一只手,它会添加前缀。另一方面,xml中不包括名称空间: abcabc

我所期待的是: abc abc

更新:

我可以从另一个问题中找到答案:

我需要一个JABX RI。扩展NamespacePrefixMapper并将其添加到Masherler中,我可以生成具有正确前缀的xml

    XMLStreamWriter xmlStreamWriter = XMLOutputFactory.newInstance()
             .createXMLStreamWriter(System.out);
        xmlStreamWriter.setPrefix("pre", "www.example.com/a");

    m.marshal(l, xmlStreamWriter);