XmlUtil工具类:

时间:2025-03-12 08:20:12
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;
	}
}