Redo the deserialize params method
This commit is contained in:
parent
9d8d7740e6
commit
5d51c2e478
1 changed files with 18 additions and 20 deletions
|
@ -5,7 +5,9 @@ import javax.xml.stream.XMLStreamConstants;
|
||||||
import javax.xml.stream.XMLStreamException;
|
import javax.xml.stream.XMLStreamException;
|
||||||
import javax.xml.stream.XMLStreamReader;
|
import javax.xml.stream.XMLStreamReader;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class XmlRpcStreamReader {
|
public class XmlRpcStreamReader {
|
||||||
|
@ -53,24 +55,20 @@ public class XmlRpcStreamReader {
|
||||||
}
|
}
|
||||||
|
|
||||||
private Object[] deserializeParams ( ) throws XMLStreamException {
|
private Object[] deserializeParams ( ) throws XMLStreamException {
|
||||||
Object[] params = new Object[ 0 ];
|
List<Object> paramsList = new ArrayList<> ( );
|
||||||
boolean isValueElement = false;
|
|
||||||
while ( nextTag ( ) ) {
|
while ( xmlStreamReader.hasNext ( ) ) {
|
||||||
if ( xmlStreamReader.getLocalName ( ).equals ( "value" ) ) {
|
int event = xmlStreamReader.next ( );
|
||||||
isValueElement = true;
|
if ( event == XMLStreamConstants.START_ELEMENT ) {
|
||||||
}
|
String elementName = xmlStreamReader.getLocalName ( );
|
||||||
else if ( xmlStreamReader.getLocalName ( ).equals ( "param" ) ) {
|
if ( elementName.equals ( "param" ) ) {
|
||||||
if ( isValueElement ) {
|
|
||||||
Object value = deserializeValue ( );
|
Object value = deserializeValue ( );
|
||||||
Object[] newParams = new Object[ params.length + 1 ];
|
paramsList.add ( value );
|
||||||
System.arraycopy ( params , 0 , newParams , 0 , params.length );
|
|
||||||
newParams[ params.length ] = value;
|
|
||||||
params = newParams;
|
|
||||||
isValueElement = false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return params;
|
|
||||||
|
return paramsList.toArray ( );
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object readMethodResponseResult ( ) throws XMLStreamException {
|
public Object readMethodResponseResult ( ) throws XMLStreamException {
|
||||||
|
@ -187,12 +185,12 @@ public class XmlRpcStreamReader {
|
||||||
return struct;
|
return struct;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String skipXmlHeader(String xml) {
|
public static String skipXmlHeader ( String xml ) {
|
||||||
int startIndex = xml.indexOf("<?xml");
|
int startIndex = xml.indexOf ( "<?xml" );
|
||||||
if (startIndex >= 0) {
|
if ( startIndex >= 0 ) {
|
||||||
int endIndex = xml.indexOf("?>", startIndex);
|
int endIndex = xml.indexOf ( "?>" , startIndex );
|
||||||
if (endIndex >= 0) {
|
if ( endIndex >= 0 ) {
|
||||||
return xml.substring(endIndex + 2);
|
return xml.substring ( endIndex + 2 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return xml;
|
return xml;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue