2013-09-25 2 views
3

Я пытаюсь удалить пустой xmlns из запроса xml, сгенерированного из заглушки, который я автоматически сгенерировал из wsdl с помощью мастера оси.Как удалить xmlns = "" из запроса xml

Мастер оси создает класс запроса, в котором есть:

private static org.apache.axis.description.TypeDesc typeDesc = 
     new org.apache.axis.description.TypeDesc(Request.class, true); 

    static { 
     typeDesc.setXmlType(new javax.xml.namespace.QName("http://myNamespace")); 
     org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc(); 
     elemField.setFieldName("destinationIdsInfo"); 
     elemField.setXmlName(new javax.xml.namespace.QName("", "DestinationIdsInfo"));//IF I REMOVE THIS EVERY ELEMENT INSIDE THAT TAG WILL HAVE xmlns="". 
     elemField.setXmlType(new javax.xml.namespace.QName("", "DestinationIdInfo")); 
     elemField.setMinOccurs(0); 
     elemField.setNillable(false); 
     elemField.setItemQName(new javax.xml.namespace.QName("", "DestinationIdInfo")); 
     .... 
    } 

Это создает мне XML, как это:

... 
<DestinationIdsInfo xmlns=""> 
    <DestinationIdInfo id="xxxx"/> 
</DestinationIdsInfo> 
... 

Но мне нужно

<DestinationIdsInfo> 
    <DestinationIdInfo id="xxxx"/> 
</DestinationIdsInfo> 

Как может я решать??

ответ

3

Вы должны указать тот же URI пространства имен для вложенных элементов:

elemField.setXmlName(new javax.xml.namespace.QName("http://myNamespace", 
                "DestinationIdsInfo")) 

(То же относится к DestinationIdInfo.)

Он будет наследовать пространство имен из содержащего элемент, поэтому я верю тебе хотеть.

Для получения дополнительной информации о посылке пространства имен см. XML namespaces specification section 6.2.

+0

Если я укажу URI пространства имен, это будет отображаться в моем запросе xml, и я не нуждаюсь в нем (владельцы веб-сервисов не хотят, чтобы это пространство имен в запросе) – JackTurky

+0

@JackTurky: Нет, это не должно - re уже * наследует * это пространство имен из одного из входящих элементов. Найдите элемент 'xmlns =" ​​http: // myNamespace "в одном из входящих в XML элементов. Если вам не нужны пространства имен * в любом месте *, вы должны избавиться от всех из них. –

+0

Ты знаешь, что ты лучший? :) Моя проблема заключалась в том, что ось генерирует мне классы с различным пространством имен, поэтому единственное, что я делаю, это равномерное пространство имен во всем мире, и теперь весь элемент xml наследует пространство имен от корневого элемента :) Спасибо youuu !!!!!!!!! – JackTurky

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