我正在尝试从使用轴向导从wsdl自动生成的存根生成的xml请求中删除空白xmlns。
Axis向导生成请求类,其中包含:
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>
我该如何解决?
答案 0 :(得分:3)
您应该为嵌套元素指定相同的名称空间URI:
elemField.setXmlName(new javax.xml.namespace.QName("http://myNamespace",
"DestinationIdsInfo"))
(DestinationIdInfo
同上。)
然后它将从包含元素继承命名空间,这就是我相信你想要的原因。
有关名称空间默认的详细信息,请参阅XML namespaces specification section 6.2。