0
파이썬이 SOAP 메시지에서 속성을 생략하는 이유는 무엇입니까?
다음과 같은 유형을 반환하는 웹 서비스가 있습니다.<xsd:complexType name="TaggerResponse">
<xsd:sequence>
<xsd:element name="msg" type="xsd:string"></xsd:element>
</xsd:sequence>
<xsd:attribute name="status" type="tns:Status"></xsd:attribute>
</xsd:complexType>
형식에는 요소 하나 (msg
)와 속성 하나 (status
)가 포함됩니다.
SOAPpy 라이브러리를 사용하는 웹 서비스와 통신하려면. 다음은 웹 서비스 (SOAP 메시지)가 리턴 한 샘플 결과입니다.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<SOAP-ENV:TagResponse>
<parameters status="2">
<msg>text</msg>
</parameters>
</SOAP-ENV:TagResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Python은이 메시지를 다음과 같이 구문 분석합니다.
<SOAPpy.Types.structType parameters at 157796908>: {'msg': 'text'}
속성이 손실 된 것을 알 수 있습니다. "status
"의 가치를 얻으려면 어떻게해야합니까?
메시지에있는 "status"값을 원합니다. 'get' 메쏘드는 그 결과로는 작동하지 않습니다 :'structType 인스턴스에는 'get'' 속성이 없습니다. 그러나 답은 단서를 주었고,'r._getAttr ("status")'를 사용하여 찾고있는 값을 찾았습니다. 그러나, ...'_getAttr'은 내부 함수이므로 사용할 수 있습니까? 아니면 값을 가져 오는 더 적절한 방법이 있습니까? – czuk
czuk : 클래스가 객체에서 상속하는 경우 getattr() 내장 함수를 사용할 수 있습니다. 예를 들어, getattr (result, "status", None)은 결과의 status 값을 반환하거나 설정되지 않은 경우 None을 반환합니다. – jkp
함수'getattr'도 존재하지 않습니다. WSDL 선언에 문제가 있는지 궁금합니다. 유효성 검사기 중 하나는 네임 스페이스 특성이 없다고 말합니다. 나는 그것에 대해 연구 중이다. – czuk