java读XML到实体bean中
来源:互联网 发布:aop面向切面编程 ios 编辑:程序博客网 时间:2024/05/21 11:34
需求:
java读XML文档到一个实体bean中
给定一个XML文档,将所有的节点,封装到一个实体中,然后,传XML文件名到程序,将该文件的内容读到实体bean中,返回实体。
xml文档的内容
<serviceApp id="" lastTime="" serviceAddress='' transfersRuleId='' ><front id='' frontCode='' frontName=''></front><node id='' nodeCode='' nodeName='' nodeIp='' userName='' password='' port='' nodeBaseData='' nodeExample='' dataBaseOwer='' ></node><table id='' tableName=''></table><targeFront frontCode='' frontName=''></targeFront><targeNode id='' nodeCode='' nodeName='' nodeIp='' userName='' password='' port='' nodeBaseData='' nodeExample='' dataBaseOwer=''></targeNode><targeTable id='' tableName=''></targeTable><findSql>select * from table</findSql><transfersRule id='' ruleName=''>{}</transfersRule></serviceApp>
根据上面的内容,创建一个实体bean(BO形式),值得注意的是XML中有很多节点和属性,所以实体生成的方式也很多,本人采取的是,根节点Root的所有属性,以String的形式存储。 而根节点的其余子节点全部采用Map<string,string>的形式存储。这样做从XML中读数据的时候,比较方便,直接将其 put 进来就好,后期取值的时候也比较方便,可以直接通过 get(key)完成。
实体bean
import java.util.Map;public class Appserverbean {private Map<String, String> front;<span style="white-space:pre"></span>//front节点private Map<String, String> node;//node节点private Map<String, String> targeFront;//targeFront节点private Map<String, String> targeNode;//targenode节点private StringBuffer findSql;//findsql节点private String id;//根节点id属性private String lastTime;//根节点lasttime属性private String serviceAddress;//根节点serviceAddress属性private String siteSave;//根节点siteSave属性private String useState;//根节点useState属性private String state;//根节点state属性private String serviceStrategy;//根节点serviceStrategy属性private String pastTime;//根节点pastTime属性public String getSiteSave() {return siteSave;}public void setSiteSave(String siteSave) {this.siteSave = siteSave;}public String getUseState() {return useState;}public void setUseState(String useState) {this.useState = useState;}public String getState() {return state;}public void setState(String state) {this.state = state;}public String getServiceStrategy() {return serviceStrategy;}public void setServiceStrategy(String serviceStrategy) {this.serviceStrategy = serviceStrategy;}public String getPastTime() {return pastTime;}public void setPastTime(String pastTime) {this.pastTime = pastTime;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getLastTime() {return lastTime;}public void setLastTime(String lastTime) {this.lastTime = lastTime;}public String getServiceAddress() {return serviceAddress;}public void setServiceAddress(String serviceAddress) {this.serviceAddress = serviceAddress;}public Map<String, String> getFront() {return front;}public void setFront(Map<String, String> front) {this.front = front;}public Map<String, String> getNode() {return node;}public void setNode(Map<String, String> node) {this.node = node;}public Map<String, String> getTargeFront() {return targeFront;}public void setTargeFront(Map<String, String> targeFront) {this.targeFront = targeFront;}public Map<String, String> getTargeNode() {return targeNode;}public void setTargeNode(Map<String, String> targeNode) {this.targeNode = targeNode;}public StringBuffer getFindSql() {return findSql;}public void setFindSql(StringBuffer findSql) {this.findSql = findSql;}}
/** * 从xml文件中读取数据 * 返回一个实体bean * Appserverbean 就是先前生成的实体 * @return */public Appserverbean readXml(String filemane) {StringBuffer sql = null;Appserverbean bean = new Appserverbean();//文件所在文件夹//FILED_URL=D:/Coding/Iexchange_spance/iexchange/src/main/java/com/cicro/iexchange/common/XMLFileHandling///从配置文件中 读取数据, 也可直接给定绝对地址String fileurl=ConnectFactory.getProperties("FILED_URL");try {// 读取并解析XML文档// SAXReader就是一个管道,用一个流的方式,把xml文件读出来SAXReader reader = new SAXReader(); // User.hbm.xml表示你要解析的xml文档<span style="white-space:pre"></span>//InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("app.xml");//将xml文件读进来Document doc = reader.read(new File(fileurl+filemane));// 获取根节点Element rootElt = doc.getRootElement(); Attribute attribute = null;//创建map Map<String, String> rootmap = new HashMap<String, String>(); //遍历得到根节点内的属性,并加到map中for ( Iterator i = rootElt.attributeIterator(); i.hasNext(); ) {<span style="white-space:pre"></span> attribute = (Attribute) i.next(); <span style="white-space:pre"></span> rootmap.put(attribute.getName(), attribute.getText());}/** * 得到根节点的属性和其对应的值, *///得到根节点中的属性和属性值String id = rootmap.get("id");String lastTime = rootmap.get("lastTime");String serviceAddress = rootmap.get("serviceAddress");String siteSave = rootmap.get("siteSave");String useState = rootmap.get("useState");String state = rootmap.get("state");String serviceStrategy = rootmap.get("serviceStrategy");String pastTime = rootmap.get("pastTime").toString();//创建一个节点名字集合List elementnameli = new ArrayList();//得到下面的所有子节点for ( Iterator i = rootElt.elementIterator(); i.hasNext(); ) { Element element = (Element) i.next(); elementnameli.add(element.getName()); }//遍历节点名字集合for (int i = 0; i < elementnameli.size(); i++) {//得到节点的名字String elementname = (String)elementnameli.get(i);//如果名字等于findSql,执行这句if("findSql".equalsIgnoreCase(elementname)){Element Element = rootElt.element(elementname); String sql1 = Element.getText().toString();sql = new StringBuffer(sql1);bean.setFindSql(sql);}if("front".equalsIgnoreCase(elementname)){//得到节点对象Element frontElement = rootElt.element(elementname); //遍历节点获得其中属性Map<String, String> map2 = new HashMap<String, String>();for ( Iterator j = frontElement.attributeIterator(); j.hasNext();) <span style="white-space:pre"><span style="white-space:pre"></span>{Attribute Element = (Attribute) j.next();map2.put(Element.getName(), Element.getText());bean.setFront(map2); }}if("node".equalsIgnoreCase(elementname)){//得到节点对象Element frontElement = rootElt.element(elementname); //遍历节点获得其中属性Map<String, String> map2 = new HashMap<String, String>();for ( Iterator j = frontElement.attributeIterator(); j.hasNext();) <span style="white-space:pre"><span style="white-space:pre"></span>{Attribute Element = (Attribute) j.next();map2.put(Element.getName(), Element.getText());bean.setNode(map2);}}if("targeFront".equalsIgnoreCase(elementname)){//得到节点对象Element frontElement = rootElt.element(elementname); //遍历节点获得其中属性Map<String, String> map2 = new HashMap<String, String>();for ( Iterator j = frontElement.attributeIterator(); j.hasNext();) <span style="white-space:pre"><span style="white-space:pre"></span>{Attribute Element = (Attribute) j.next();map2.put(Element.getName(), Element.getText());bean.setTargeFront(map2);}}if("targeNode".equalsIgnoreCase(elementname)){//得到节点对象Element frontElement = rootElt.element(elementname); //遍历节点获得其中属性Map<String, String> map2 = new HashMap<String, String>();for ( Iterator j = frontElement.attributeIterator(); j.hasNext();) <span style="white-space:pre"><span style="white-space:pre"></span>{<span style="white-space:pre"></span>Attribute Element = (Attribute) j.next();map2.put(Element.getName(), Element.getText());bean.setTargeNode(map2); }}}bean.setId(id);bean.setLastTime(lastTime);bean.setServiceAddress(serviceAddress);bean.setSiteSave(siteSave);bean.setUseState(useState);bean.setState(state);bean.setPastTime(pastTime);System.out.println(bean.getId());System.out.println(bean.getLastTime());System.out.println(bean.getSiteSave());} catch (DocumentException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}return bean;}
1 0
- java读XML到实体bean中
- java 反射通过set、get 封装到实体Bean
- 判断List<实体bean>中是否含有某个实体bean
- 实体bean配置模板(Person.hbm.xml)
- java利用反射解析xml到实体类
- 利用JAVA反射机制解析XML数据到实体
- java实体转xml
- JAXB2完成java bean到xml的相互转换
- JAXB2完成java bean到xml的相互转换
- JAB2完成Java bean到xml的相互转换
- 在hibernate中,如何把原生sql查询出来的结果映射到实体bean
- java bean 转xml
- 在JBOSS中操作实体BEAN
- 从实体Bean中给VO赋值
- java通过名称获取实体bean
- 实体Bean
- 实体Bean
- 实体Bean
- HDU 3491 最小割
- WSASocket failed 10013 处理
- android自定义View
- nginx stub_status 监控模块
- 关于页面加载图片错位的思考
- java读XML到实体bean中
- 整数数组 与 字符数组 辨析
- PCM数据格式
- Angular 资料收录
- 举例说明协方差矩阵的运算
- 普通类获取spring上下文
- 简单工厂&工厂方法&抽象工厂
- 第一章 Introduction exercise 21-33
- HTML5的data-* 自定义属性