com.taobao.api.internal.parser.xml.XmlConverter Maven / Gradle / Ivy
package com.taobao.api.internal.parser.xml;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.w3c.dom.Element;
import com.taobao.api.ApiException;
import com.taobao.api.internal.mapping.Converter;
import com.taobao.api.internal.mapping.Converters;
import com.taobao.api.internal.mapping.Reader;
import com.taobao.api.internal.util.StringUtils;
import com.taobao.api.internal.util.XmlUtils;
/**
* JSON格式转换器。
*
* @author carver.gu
* @since 1.0, Apr 11, 2010
*/
public class XmlConverter implements Converter {
public T toResponse(String rsp, Class clazz) throws ApiException {
Element root = XmlUtils.getRootElementFromString(rsp);
return getModelFromXML(root, clazz);
}
private T getModelFromXML(final Element element, Class clazz) throws ApiException {
if (element == null)
return null;
return Converters.convert(clazz, new Reader() {
public boolean hasReturnField(Object name) {
Element childE = XmlUtils.getChildElement(element, (String) name);
return childE != null;
}
public Object getPrimitiveObject(Object name) {
return XmlUtils.getChildElementValue(element, (String) name);
}
public Object getObject(Object name, Class> type) throws ApiException {
Element childE = XmlUtils.getChildElement(element, (String) name);
if (childE != null) {
return getModelFromXML(childE, type);
} else {
return null;
}
}
public List> getListObjects(Object listName, Object itemName, Class> subType) throws ApiException {
List