dom4j使用指南之一

关键字: dom4j, 配置, 使用
# 关键的API
SAXReader = new SAXReader();
is = this.getClass().getClassLoader().getResourceAsStream("beans.xml");
Document doc = reader.read(is);

Element root = doc.getRootElement();
List<?> subElements = root.elements("bean");
Element subElement = ele.element("bean");

Attribute idAttr = subElement.attribute("id");
String eleName = subElement.attributeValue("id");
eleName = idAttr.stringValue();

String beanClassName = subElement.attributeValue("class");
Object bean = Class.forName(beanClassName).newInstance();



Java 代码:

private Map<String, Object> parseBeanXml(InputStream is) throws Exception {
SAXReader reader = new SAXReader();
Document doc = reader.read(is);

Element root = doc.getRootElement();
logger.debug("root element name:" + root.getName());
List<?> beanList = root.elements("bean");
List<Element> beanElements = new ArrayList<Element>();
for (Object beanObj : beanList) {
Element bean = (Element) beanObj;
String beanName = bean.attributeValue("id");
String beanClassStr = bean.attributeValue("class");
Class<?> beanClass = Class.forName(beanClassStr);
Object beanInstance = beanClass.newInstance();
beanElements.add(bean);
beanFactory.put(beanName, beanInstance);
}

for (Element bean : beanElements) {
List<?> proxyElements = bean.elements("proxy");
if (!proxyElements.isEmpty()) {
String beanName = bean.attributeValue("id");
String beanClassStr = bean.attributeValue("class");
Class<?> beanClass = Class.forName(beanClassStr);
List<Class<?>> proxyClasses = new ArrayList<Class<?>>();
List<Interceptor> interceptors = new ArrayList<Interceptor>();
for (Object proxyObj : proxyElements) {
Element proxy = (Element) proxyObj;
Attribute proxyRefAttr = proxy.attribute("ref");
Class<?> proxyClass = beanFactory.get(
proxyRefAttr.getStringValue()).getClass();
proxyClasses.add(proxyClass);
interceptors.add((Interceptor) proxyClass.newInstance());
}

Object beanProxy = getProxy(beanClass.newInstance(),
interceptors);
beanFactory.put(beanName, beanProxy);
}
}
return this.beanFactory;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值