2013-05-07 2 views
2

Я хочу указать произвольное пространство имен для моих атрибутов xml при «маршалинге». Я знаю, что есть два способа добиться этого. Одним из них является переопределение метода класса «NameSpacePrefixMapper», который является не более справедливо, если мы склонны использовать пакет «javax.xml.bind» и другой способ является определяющим в packege-info.javaJAXB XML Пользовательское имя Пространство

@javax.xml.bind.annotation.XmlSchema(
namespace = "http://base.google.com/ns/1.0", 
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED, 
xmlns = { 
@javax.xml.bind.annotation.XmlNs(prefix = "g", 
namespaceURI="http://base.google.com/ns/1.0") 
} 
) 
package com.test; 

Это прекрасно работает но это дает пространство имен для всех атрибутов, таких как ниже

<g:feed xmlns:g="http://base.google.com/ns/1.0" xmlns="http://www.w3.org/2005/Atom"> 
    <g:title>intersportOnlineshopping</g:title> 
    <g:link>http://www.intersport.de</g:link> 
    <g:summary>it is a merchantaised online shopping system<summary> 
    <g:entry> 
     <g:articleID>7611319580577</g:articleID> 
     <g:articleTitle>ETIREL Damen Bikinihose »Melly solid«</g:articleTitle> 
     <g:size>0</g:size> 
    </g:entry> 
<g:feed> 

Я не хочу этого. Я хочу, чтобы пространство имен предназначалось только для атрибутов, которые я намереваюсь (например, ниже).

<feed xmlns:g="http://base.google.com/ns/1.0" xmlns="http://www.w3.org/2005/Atom"> 
    <title>intersportOnlineshopping<title> 
    <link>http://www.intersport.de<link> 
    <summary>it is a merchantaised online shopping system</g:summary> 
    <entry> 
     <articleID>7611319580577<articleID> 
     <g:articleTitle>ETIREL Damen Bikinihose »Melly solid«</g:articleTitle> 
     <g:size>0</g:size> 
    </entry> 
<feed> 

Как я могу это сделать. Спасибо за отличную помощь.

ответ

0

Измените аннотацию @XmlSchema, чтобы указать только префиксы пространства имен. Затем в аннотации @XmlElement для свойств, которые вы хотите использовать для определения пространства имен, укажите параметр пространства имен.

+0

Я дал аннотацию @XmlElement (namespace = "http://base.google.com/ns/1.0") только для одного свойства. Тем не менее пространство имен добавляется ко всем. Как ограничить аннотацию @XmlSchema конкретным методом – user964147

+1

@ user964147 - Вы удалили все из аннотации '@ XmlSchema', за исключением свойства' xmlns'? –

+1

Только что я сделал это, это очень полезный файл – user964147

Смежные вопросы