2011-10-20 1 views
5

에 ins0을 추가, 나는 다음과 같은 요청 XML 얻을 :Savon 루비 보석이 savon 보석을 사용하여 태그

<?xml version="1.0" encoding="UTF-8"?> 
    <soap:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:wsdl="URL" 
     xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
     xmlns:ins0="SOME URL"> 
     <soap:Body> 
      <ins0:Test xmlns="SOME URL"> 
      </ins0:Test> 
     </soap:Body> 
    </soap:Envelope> 

을하지만 대신 할 필요가 :

<?xml version="1.0" encoding="UTF-8"?> 
    <soap:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:wsdl="URL" 
     xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
     <soap:Body> 
      <Test xmlns="SOME URL"> 
      </Test> 
     </soap:Body> 
    </soap:Envelope> 

공지 사항 ins0가 제거되었습니다.

제안 사항?

+0

참조 http://stackoverflow.com/questions/6720720/how-to-stop-savon-from-adding-prefixes-to-soap-body –

+0

시도했지만 오류가 발생했습니다. '서버가 HTTP Header SOAPAction : test.'의 값을 사용하여 "Test"동작을 수행하고 소문자로 만들었습니다. –

+0

사실 나는이 XML 차이가 아무 것도 깨지 않는다는 것을 알았습니다. 코드는 정상적으로 작동합니다. 그러나 누군가 elses 코드를 깨뜨릴 수 있습니다. –

답변

2

두 개의 XML 문서는 동일하므로 XML 준수 에이전트가 문서를 구문 분석하는 동안 문제가 없어야합니다.

Savon이 생성 한 문서는 단순히 "SOME URL"네임 스페이스에 대한 ins0이라는 네임 스페이스 접두사를 만드는 것입니다. 이것은 네임 스페이스의 많은 요소를 가진 큰 SOAP 문서에 편리하다. 이 예에서 접두어는 실제로 필요하지 않습니다.

내가 볼 수있는 유일한 잠재적 인 문제는 Savion이 생성 한 문서가 ins0 네임 스페이스를 두 번 선언했음을 나타냅니다. 한 번은 soap : Envelope에서, 그런 다음 soap : Body에서는 두 번입니다. 불필요하고 오류 가능성이있는 것 같습니다.