import ;
import ;
import ;
import ;
import ;
import ;
import .;
import .;
import ;
import ;
/**
* XML文件工具类,包含:将xml文件解析成实体集合、获取xml标签值、将标签值解析成实体集合
*/
public class XMLUtil {
private XMLUtil(){}
/*-
* XML文件解析成实体,不涉及到标签的属性值。
* @param xml xml字符串文件
* @param clazz 对应实体的class文件
* @param tagEntity
* 开始解析实体的标签,例如下面的实例中就是student<br>
* < person ><br>
* < student ><br>
* < name >Lucy< /name ><br>
* < age >21< /age ><br>
* < /student ><br>
* < /person ><br>
* @return 返回解析的对应实体文件
*/
public static<T> List<T> xmlToObject(String xml, Class<T> clazz, String tagEntity){
List<T> list = null;
XmlPullParser xmlPullParser = ();
InputStream inputStream = new ByteArrayInputStream(());
try {
(inputStream, "utf-8");
Field[] fields = ();
int type = ();
String lastTag = "";
T t = null;
while (type != XmlPullParser.END_DOCUMENT) {
switch (type) {
case XmlPullParser.START_DOCUMENT:
list = new ArrayList<T>();
break;
case XmlPullParser.START_TAG:
String tagName = ();
if((tagName)){
t = ();
lastTag = tagEntity;
}else if((lastTag)){
String textValue = ();
String fieldName = ();
for(Field field : fields){
(t,field,fieldName,textValue);
}
}
break;
case XmlPullParser.END_TAG:
tagName = ();
if((tagName)){
(t);
lastTag = "";
}
break;
case XmlPullParser.END_DOCUMENT:
break;
}
}
} catch (XmlPullParserException e) {
();
} catch (InstantiationException e) {
();
} catch (IllegalAccessException e) {
();
} catch (IOException e) {
();
}
return list;
}
/**
* 获取xml字符串标签中的属性值
* @param xml xml字符串
* @param clazz 转换成对应的实体
* @param tagName 实体对应xml字符串的起始标签,如下面实例中的person标签<br>
* < person name="Lucy" age="12"><br>
* < student ><br>
* < name >Lucy< /name ><br>
* < age >21< /age ><br>
* < /student ><br>
* < /person ><br>
* @return 返回属性值组成的List对象集合。
*/
public static<T> List<T> attributeToObject(String xml, Class<T> clazz, String tagName){
if((tagName))return null;
List<T> list = null;
XmlPullParser xmlPullParser = ();
InputStream inputStream = new ByteArrayInputStream(());
try {
(inputStream, "utf-8");
int type = ();
T t = null;
while(type != XmlPullParser.END_DOCUMENT){
switch(type){
case XmlPullParser.START_DOCUMENT:
list = new ArrayList<T>();
break;
case XmlPullParser.START_TAG:
if((())){
t = ();
Field[] fields = ();
for(Field field : fields){
String fieldName = ();
for(int index = 0;index < ();index++){
if(((index))){
(t,field,fieldName,(index));
}
}
}
}
break;
case XmlPullParser.END_TAG:
if((())){
(t);
}
break;
case XmlPullParser.END_DOCUMENT:
break;
}
type = ();
}
}catch(Exception ex){
();
}
return list;
}
/**
* 获取Xml文件中的属性值
* @param xml xml文件字符串
* @param tagName 标签名称
* @param attributeName 属性名称
* @return 返回获取的值,或者null
*/
public static String getTagAttribute(String xml, String tagName, String attributeName){
if((tagName) || (attributeName)){
throw new IllegalArgumentException("请填写标签名称或属性名称");
}
XmlPullParser xmlPullParser = ();
InputStream inputStream = new ByteArrayInputStream(());
try {
(inputStream, "utf-8");
int type = ();
while(type != XmlPullParser.END_DOCUMENT){
switch(type){
case XmlPullParser.START_TAG:
if((())){
for(int i=0; i < ();i++){
if(((i))){
return (i);
}
}
}
break;
}
type = ();
}
} catch (XmlPullParserException e) {
();
} catch (IOException e) {
();
}
return null;
}
}