Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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(JDK 7)设置默认名称空间_Java_Xml_Jaxb - Fatal编程技术网

Java 如何使用JAXB(JDK 7)设置默认名称空间

Java 如何使用JAXB(JDK 7)设置默认名称空间,java,xml,jaxb,Java,Xml,Jaxb,我在使用JAXB设置默认名称空间时遇到问题。我遵循了来自的提示,但问题仍然存在。以下是我的包裹信息: @XmlSchema( namespace = "my/xml/namespace", xmlns = { @XmlNs(namespaceURI="my/xml/namespace",prefix=""), }, elementFormDefault = javax.xml.bind.annotat

我在使用JAXB设置默认名称空间时遇到问题。我遵循了来自的提示,但问题仍然存在。以下是我的包裹信息:

@XmlSchema(
        namespace = "my/xml/namespace",
        xmlns = {
                @XmlNs(namespaceURI="my/xml/namespace",prefix=""),
        },
        elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package my.xml.namespace;
import javax.xml.bind.annotation.XmlSchema;
import javax.xml.bind.annotation.XmlNs;
import javax.xml.XMLConstants;;
但仍然创建了如下xml:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:resp xmlns:ns2="my/xml/namespace">
....
</ns2:resp>

您必须使用名称空间映射器

网上有一些例子:


我想我在某个地方读到,jdk 7允许使用它。但是如果你建议这样做,我会试试。NamespacePrefixMapper被认为是实现细节,它不是Java API的一部分。迁移到其他java供应商时,您将面临风险。@PastorPL,是的,这将导致PropertyException:name:com.sun.xml.bind.namespacePrefixMapperI也有此问题。还没有找到解决办法。
        @Override
        public String getPreferredPrefix(String namespaceUri, String suggestion, boolean requirePrefix)
        {
            if("amc/xml/pay03_entryresponse".equals(namespaceUri)) {
                return "";
            }else return suggestion;
        }

    };
    marshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper", mapper);