Как удалить xmlns = "" из запроса xml

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

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

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="">
 </destinationidsinfo>
...

Но мне нужно

<destinationidsinfo>
 </destinationidsinfo>

Как я могу решить?

1 ответ

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

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

(То же самое для DestinationIdInfo.)

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

Подробнее о пространстве имен по умолчанию см. спецификацию пространств имен XML 6.2.

licensed under cc by-sa 3.0 with attribution.