删除 ns2 作为默认命名空间前缀
我有一个使用默认命名空间打印的文件。这些元素以 ns2 的前缀打印,我需要删除它,我的代码也是如此:
<ns2:foo xmlns:ns2="http://namespace" />
我想要它是什么样子:
<foo xmlns="http://namespace" />
这就是我对它进行编码的方式,在我看来,它应该足以让ns2消失:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:bar="http://namespace" targetNamespace="http://namespace"
elementFormDefault="qualified">
...
生成的包信息如下所示:
@javax.xml.bind.annotation.XmlSchema(namespace = "http://namespace",
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package com.foo.bar;
我创建的文件是这样的:
JAXBContext jaxbContext = JAXBContext.newInstance(generatedClassesPackage);
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.marshal(new JAXBElement<Foo>(new QName("http://namespace", "Foo"),
Foo.class, rootFoo), outputStream);
生成的ClassesPackage是包信息.java和元素所在的包。
Foo 对象已定义,并具有如下元素:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"group"
})
@XmlRootElement(name = "Foo")
public class Foo {
@XmlElement(name = "Group", required = true)
protected List<Group> group;
这是我错过的东西吗?还是我误解了这是如何工作的?