既定の名前空間で印刷されたファイルがあります。ns2を既定の名前空間プレフィックスとして削除します
<foo xmlns="http://namespace" />
これは私が持っているかである:私はそれになりたい方法を
<ns2:foo xmlns:ns2="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">
...
生成されたパッケージ情報は次のように判明:
私はNS2が離れて行くすることは十分なはず参照として何か、それをコード化0@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);
generatedClassesPackageがpackage-info.javaと要素があるパッケージです。
のFooオブジェクトが定義されており、このような要素を持っている::
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"group"
})
@XmlRootElement(name = "Foo")
public class Foo {
@XmlElement(name = "Group", required = true)
protected List<Group> group;
は、それは私が見逃している何かですか?それがどういうふうに誤解したのですか?
名前空間を与えて修飾した場合、xsdごとに有効な名前空間を置く必要があります。名前空間を完全に削除するか、接頭辞を管理しやすいものに変更するか、トップレベル要素を変更してメイン名前空間のxmlnsを持つようにして、その名前空間内に何かのプレフィックスがないようにすることができます。だからあなたが望むのはxsdsごとに有効なxmlではありません。名前空間要素を必要としますか? –
私はfoo要素の属性を表示しないで私を混乱させたと思います。あなたは ' 'の代わりに ' –
@DMosesはい、私はそれを含んでいて、はい、それは私がそれを望む方法です。私はこれが欲しい: xmlns:ns2 = "http://名前空間" ルート要素です。 – Vegard