通过jaxb方式把xml文件映射成bean对象。 1、新建java工程或者web工程都可以。 2、通过精简必须导入jar包 activation.jar jaxb-api-2.0.jar jaxb-impl-2.0.1.jar jsr173_api-1.0.jar 3、 新建xml文件 <?xml version="1.0" encoding="UTF-8"?> <root> <template start="true" ip="127.0.0.1" port="3344" server="server" /> <template ... ... /> </root> 4、新建bean对象,xml的映射文件。 Vo.java 如下 Java代码 收藏代码 import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "", propOrder = { }) @XmlRootElement(name = "[color=red]template[/color]") public class Vo { @XmlAttribute private String start; @XmlAttribute private String ip; @XmlAttribute private String port; @XmlAttribute private String server; public String getStart() { return start; } public void setStart(String start) { this.start = start; } public String getIp() { return ip; } public void setIp(String ip) { this.ip = ip; } public String getPort() { return port; } public void setPort(String port) { this.port = port; } public String getServer() { return server; } public void setServer(String server) { this.server = server; } } 该文件对应xml文件中 循环节点 template 元素 Root.java 文件如下 Java代码 收藏代码 import java.util.ArrayList; import java.util.List; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "", propOrder = { }) @XmlRootElement(name = "[color=blue]root[/color]") public class Root { protected List<Vo> [color=red]template[/color]; public List<Vo> getTemplateList() { if (template == null) { template = new ArrayList<Vo>(); } return this.template; } } 注意bean对象与xml映射的关系。 5、 解析xml为bean类 Java代码 收藏代码 public static void gernateConfig() throws Exception{ StringBuffer buffer = null; JAXBContext jaxbContext; try { //读入xml文件流 InputStream is = Excecute.class.getResourceAsStream(“/conf/config.xml”); BufferedReader in = new BufferedReader(new InputStreamReader(is)); buffer = new StringBuffer(); String line = ""; while ((line = in.readLine()) != null) { buffer.append(line); } //加载映射bean类 jaxbContext = JAXBContext.newInstance(Root.class); //创建解析 Unmarshaller um = jaxbContext.createUnmarshaller(); StreamSource streamSource = new StreamSource(new StringReader(buffer.toString())); Root root = (Root) um.unmarshal(streamSource); } catch (Exception e) { e.printStackTrace(); throw new Exception(e.getMessage()); } } 6、 把bean对象生成xml字符串方法 Java代码 收藏代码 public static String gernateConfigXml(Root root) throws Exception { if (root != null) { try { JAXBContext context = JAXBContext.newInstance(Root.class); Marshaller m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); Writer writer = new StringWriter(); m.marshal(root, writer); try { String xml = writer.toString(); writer.flush(); writer.close(); return xml; } catch (IOException e) { return ""; } } catch (Exception e) { throw new Exception("失败!"); } } else { return null; } }[/size]
jaxb解析xml 实例2
[size=xx-small]
猜你喜欢
转载自chimpp55.iteye.com/blog/2344403
今日推荐
周排行