Supprimer ns2 comme préfixe d'espace de noms par défaut
J'ai un fichier qui est imprimé avec un espace de noms par défaut. Les éléments sont imprimés avec un préfixe de ns2, j'ai besoin de cela pour être supprimés, comment il est avec mon code:
<ns2:foo xmlns:ns2="http://namespace" />
comment je veux qu'il soit:
<foo xmlns="http://namespace" />
c'est la façon dont j'ai codé comme ça, quelque chose qui, comme je vois qu'il devrait être suffisant pour le ns2 pour aller loin:
<?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">
...
le package généré-info s'avère comme ceci:
@javax.xml.bind.annotation.XmlSchema(namespace = "http://namespace",
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package com.foo.bar;
J'ai créer le fichier comme ceci:
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 est le paquet, où package-info.java et les éléments sont.
L'objet Foo est défini et a des éléments comme ceci::
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"group"
})
@XmlRootElement(name = "Foo")
public class Foo {
@XmlElement(name = "Group", required = true)
protected List<Group> group;
Est-il quelque chose que j'ai raté? ou ai-je mal compris comment cela fonctionne?
source d'informationauteur Vegard
Vous devez vous connecter pour publier un commentaire.
Très probablement, vous avez plusieurs espaces de noms dans la réponse. Cela permettra d'utiliser la valeur par défaut de la convention de création de ns# préfixes d'espace de noms et l'un d'eux devient le xmlns sans préfixe. Si vous voulez contrôler ce que vous pouvez faire ce qui suit:
L'
http://namespace
que le défaut xmlns toujours et l'utilisation ns# pour tous les autres espaces de noms lors de la sérialisation. Vous pouvez également leur donner plus descriptif, les préfixes si vous le souhaitez.Tous vous avez besoin de 2 faire est lorsque vous ouvrez un nouveau package sélectionnez créer un package info
dans le paquet d'infos ajouter l'annotation suivante ou la modifier si nécessaire
Cela permettra d'éliminer l'ns2 préfixe
Début de JDK6u18 la NamespacePrefixMapper technique n'est plus utilisé.
- Je résoudre ce la suppression d'un fichier package-info.java dans le jaxb classes du package et de la re-compilation de l'application.