2013-09-25 6 views
3

축 마법사를 사용하여 wsdl에서 자동 생성 한 스텁에서 생성 된 xml 요청에서 빈 xmlns를 제거하려고합니다. 내가 어떻게 할 수XML 요청에서 xmlns = ""을 (를) 삭제하는 방법

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

하지만

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

필요합니다

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을 생성합니다

축 마법사가있는이 요청 클래스를 생성 풀다??

답변

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 : 아니요, 둘러싸는 요소 중 하나에서 네임 스페이스를 이미 상속받은 *. XML의 포함 요소 중 하나에서'xmlns = "http : // myNamespace"요소를 찾으십시오. 어느 곳에서나 * 네임 스페이스를 원하지 않으면 모든 것을 제거해야합니다. –

+0

당신은 당신이 최고임을 압니다? :) 내 문제는 축이 저에게 다른 네임 스페이스를 가진 클래스를 생성했기 때문에 제가하는 유일한 일은 어디에서나 유니폼 네임 스페이스를 만드는 것이 었습니다. 이제 xml의 모든 요소가 루트 요소에서 네임 스페이스를 상속받습니다. 감사합니다 youuu !!!!!!!!! – JackTurky

관련 문제