私はこのxmlを持っています:
<tag1 xmlns="myNamespace.com/#">
<insideTag myAttribute="5">
some text
</insideTag>
</tag1>
しかし、マーシャリング後は次のようになります。
<tag1 xmlns="myNamespace.com">
<insideTag xmlns:ns1="myNamespace.com/#" xmlns="" myAttribute="5">
some text
</insideTag>
</tag1>
ほとんど同じですが、xmlが最初のもののようであることが本当に必要です。
このxmlへのxsdはありません。実際には、その xml が解析されて org.w3c.dom.Element になり、ObjectType (以下の xsd およびクラスの簡略化された実装) に追加され、この ObjectType がマーシャリングされます。
これが重要な場合は、NamespacePrefixMapper を使用しています。xsd (attributeFormDefault が設定されていないことに注意してください)
<schema xmlns="http://www.w3.org/2001/XMLSchema" version="0.1"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
targetNamespace="http://www.w3.org/2000/09/xmldsig#"
elementFormDefault="qualified">
<complexType name="ObjectType" mixed="true">
<sequence minOccurs="0" maxOccurs="unbounded">
<any namespace="##any" processContents="lax"/>
</sequence>
</complexType>
</schema>
クラス:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ObjectType", namespace = "http://www.w3.org/2000/09/xmldsig#",
propOrder = { "content" })
public class ObjectType{
@XmlMixed
@XmlAnyElement(lax = true)
protected List<Object> content;
public List<Object> getContent() {
if (content == null) {
content = new ArrayList<Object>();
}
return this.content;
}
}
それで...誰かがこれを解決する方法を知っていますか?
ちなみに...このソリューションはjaxb-impl-2.1.4でも動作する必要があります。
みんな助けてくれてありがとう。