Mam plik wydrukowany z domyślnym obszarem nazw. Elementy są drukowane z prefiksem NS2, muszą to być usunięte, jak to jest z mojego kodu I:Usuń ns2 jako domyślny prefiks przestrzeni nazw
<ns2:foo xmlns:ns2="http://namespace" />
jak chcę go mieć:
<foo xmlns="http://namespace" />
to jak mam kodowane go, coś, co jak widzę to powinno wystarczyć dla NS2 odejść:
<?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">
...
wygenerowany pakiet-info okazuje się tak:
@javax.xml.bind.annotation.XmlSchema(namespace = "http://namespace",
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package com.foo.bar;
tworzę plik tak:
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 jest pakiet gdzie package-info.java i pierwiastki.
Obiekt Foo jest zdefiniowany i ma elementy jak to ::
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"group"
})
@XmlRootElement(name = "Foo")
public class Foo {
@XmlElement(name = "Group", required = true)
protected List<Group> group;
Czy jest coś, czego brakowało? czy źle zrozumiałem, jak to działa?
Jeśli nadasz mu przestrzeń nazw i sprawi, że będzie kwalifikowana, to musi umieścić gdzieś przestrzeń nazw, aby była ważna zgodnie z xsd. Możesz całkowicie usunąć obszar nazw lub zmienić prefiks na coś bardziej zarządzalnego lub zmienić element najwyższego poziomu, aby miał xmlns głównej przestrzeni nazw, więc nie ma żadnych przedrostków dla niczego w tej przestrzeni nazw. Tak, czego chcesz, nie jest prawidłowy xml na twoje xsds. Czy chcesz elementów z przypisanymi nazwami, czy nie? –
Myślę, że pomyliłeś mnie, nie pokazując atrybutów na tym elemencie foo. Czy mówisz, że chcesz ' ' zamiast ' '? –
@DMoses tak, powinienem był to załączyć, i tak, tak to chcę :). Chcę tego: xmlns: ns2 = "http: // namespace" w elemencie głównym. – Vegard