我想獲得一個SOAPBody對象的長度。我目前的實現是有效獲取SOAPBody長度
String mBody = body.toString();
int len= mBody.length();
使用org.apache.axiom.soap.SOAPBody;
這需要的我的整個運行時間大量的時間作爲我的SOAP體是非常大的。這種方式效率很低。我怎樣纔能有效率地利用這個長度?
我想獲得一個SOAPBody對象的長度。我目前的實現是有效獲取SOAPBody長度
String mBody = body.toString();
int len= mBody.length();
使用org.apache.axiom.soap.SOAPBody;
這需要的我的整個運行時間大量的時間作爲我的SOAP體是非常大的。這種方式效率很低。我怎樣纔能有效率地利用這個長度?
我相信你可以使用消息上下文來獲取內容長度:
org.apache.axis2.context.MessageContext.getCurrentMessageContext().getInboundContentLength()
我正在使用org.apache.synapse.MessageContext。我有這樣的方法來獲得contentLength – user2694734
你提的問題基本上是毫無意義的。對於SOAP體來說,不存在「length」這樣的概念,或者對於XML元素來說更普遍。這裏有一個原因(其他原因之一):
SOAP消息中的Body
元素位於名稱空間http://schemas.xmlsoap.org/soap/envelope/
(對於SOAP 1.1)或http://www.w3.org/2003/05/soap-envelope
(對於SOAP 1.2)中。如果使用toString
方法將SOAPBody
實例序列化爲字符串,則Axiom將因此在Body
元素上生成名稱空間聲明,以便結果與命名空間相關。但是,當消息通過線路發送時,SOAP主體將是位於同一名稱空間中的Envelope
元素的子元素。在這種情況下,名稱空間聲明將在Envelope
元素上生成,而不會在Body
元素上重複。
這意味着Body
元素有效採用的字符數取決於序列化的上下文。
其org.apache.axiom.soap.SOAPBody – user2694734
你是什麼意思的「長度」?你是指'SOAPBody'中的文本長度還是序列化的長度? –
是否有可能以某種方式讀取將XML編入「SOAPBody」的長度_before_?我擔心,一旦擁有一個'SOAPBody'對象,就無法獲得長度而不轉換爲字符串或序列化。 –