2019.8.16 NIIT第三十一天
xml解析数据
例题 一、 有以下XML文件:
<beans>
<bean className = “com.igeek.domain.Car”>
<property name = “brand” value = “宝马”/>
<property name = “color” value = “红色”/>
<property name = “price” value = “280000”/>
<property name = “type” value = “CX200”/>
<property name = “productDate” value = “2016-10-30”/>
</bean>
<bean className = “com.igeek.domain.Book”>
<property name = “title” value = “Oracle管理员手册”/>
<property name = “publishDate” value = “2017-01-28”/>
<property name = “price” value = “35”/>
<property name = “publishingHouse” value = “极客营出版社”/>
<property name = “author” value = “极客人”/>
</bean>
</beans>
二、 请按XML文件中的属性定义两个类。并使用dom4j解析这个xml文件,先获取每个元素的className属性,通过反射创建对象。获取每个bean数据,使用BeanUtils工具分别填充两个Bean对象。
package day18作业_Test1_8;
import org.apache.commons.beanutils.BeanUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.List;
public class MainApp {
static HashMap<String,Object> map=new HashMap<>();
public static void main(String[] args) {
//获取xml中的值,解析并创建对象放入map中
analyseXml();
System.out.println(map.toString());
}
private static void analyseXml() {
try {
Object object=null;
SAXReader saxReader=new SAXReader();
Document document=saxReader.read("src/day18作业_Test1_8/bean.xml");
Element rootElement=document.getRootElement();
List<Element> allBean=rootElement.elements("bean");
for (Element bean:allBean) {
String className=bean.attributeValue("className");
//System.out.println(className);
//创建obj对象
Class clazz=Class.forName(className);
object=clazz.newInstance();
List<Element> allproperty =bean.elements("property");
for (Element property:allproperty) {
String name=property.attributeValue("name");
String value=property.attributeValue("value");
//System.out.println(name+":"+value);
//为obj对象注入属性
BeanUtils.setProperty(object,name,value);
}
map.put(className,object);
}
} catch (DocumentException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}