Ich habe eine Datei, die mit einem Standardnamespace gedruckt wird. Die Elemente mit dem Präfix ns2 gedruckt werden, muss ich diese entfernt werden, wie es mit meinem Code ist:Entfernen Sie NS2 als Standard-Namespacepräfix
<ns2:foo xmlns:ns2="http://namespace" />
, wie ich es sein will:
<foo xmlns="http://namespace" />
das ist, wie ich codiert es, etwas, was wie ich es sehe genug sein sollte für die ns2 gehen weg:
<?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">
...
das erzeugte Paket-Info stellt sich heraus, wie folgt aus:
@javax.xml.bind.annotation.XmlSchema(namespace = "http://namespace",
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package com.foo.bar;
ich erstellen Sie die Datei wie folgt aus:
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 ist das Paket, wo package-info.java und die Elemente sind.
Das Objekt Foo definiert ist und Elemente wie folgt ::
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"group"
})
@XmlRootElement(name = "Foo")
public class Foo {
@XmlElement(name = "Group", required = true)
protected List<Group> group;
Ist es etwas, was ich verpasst haben? oder habe ich missverstanden, wie das funktioniert?
Wenn Sie ihm einen Namespace geben und ihn qualifiziert machen, muss er den Namespace irgendwo platzieren, um gemäß dem xsd gültig zu sein. Sie können den Namespacing vollständig entfernen oder das Präfix ändern, damit es besser verwaltet wird, oder das Element der obersten Ebene so ändern, dass es die xmlns des Hauptnamespace enthält, so dass für nichts in diesem Namespace keine Präfixe vorhanden sind. Was Sie wollen, ist kein gültiger XML-Code für Ihre xsds. Willst du Namespace-Elemente oder nicht? –
Ich glaube, du hast mich verwirrt, weil ich die Attribute auf diesem foo Element nicht gezeigt habe. Willst du damit sagen, dass du ' ' anstelle von ' '? –
@DMoses ja, ich hätte das aufgenommen, und ja, so will ich es :). Ich möchte das: xmlns: ns2 = "http: // Namespace" im Stammelement. – Vegard