zoeban
2016-07-26 22:05:22
原
jaxb操作xml文件(自定义xml namespace 前缀,可以有多个namespace)
最近在用jaxb 操作xml文件,所以我把代码整理了哈,里面实现的内容有:
1. 用jaxb把pojo对象转换成xml格式的字符串;
1.1. 生成的pojo对象在pojo文件夹里面(这个xml文件支持自定义namespace的前缀,可以有多个namespace),主要的两个文件是
ObjectFactor,package-info.java
1.2. jaxb把pojo对象转换成xml的代码片段:
public static String marshal(Object pObj, String pEncoding) throws Exception { JAXBContext jaxbContext = JAXBContext.newInstance(pObj.getClass()); Marshaller marshaller = jaxbContext.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_ENCODING, pEncoding); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); marshaller.setProperty(Marshaller.JAXB_FRAGMENT, false); //the propertyName(com.sun.xml.internal.bind.namespacePrefixMapper) may be different, it depends on your marshaller implement class marshaller.setProperty("com.sun.xml.internal.bind.namespacePrefixMapper", new NamespacePrefixMapper() { @Override public String getPreferredPrefix(String pNamespaceUri, String pPerfix, boolean pB) { if (NameSpace.NAMESPACE_CEB_URI.equals(pNamespaceUri)) { return NameSpace.NAMESPACE_CEB_PREFIX; } else if (NameSpace.NAMESPACE_XSI_URI.equals(pNamespaceUri)) { return NameSpace.NAMESPACE_XSI_PREFIX; } return pPerfix; } }); StringWriter stringWriter = null; try { stringWriter = new StringWriter(); marshaller.marshal(pObj, stringWriter); String xmlContent = stringWriter.toString(); return xmlContent; } finally { if (stringWriter != null) { stringWriter.flush(); stringWriter.close(); } } }
2. 根据xml格式的字符串生成新的xml文件;
public static void generateXmlFile(String pXmlContent, File pFile, String pEncoding) throws Exception { if (!pFile.exists()) { pFile.createNewFile(); } FileOutputStream fos = null; OutputStreamWriter osw = null; try { fos = new FileOutputStream(pFile); osw = new OutputStreamWriter(fos, pEncoding); osw.write(pXmlContent); } finally { if (osw != null) { osw.flush(); osw.close(); } if (fos != null) { fos.flush(); fos.close(); } } }
3. 复制xml文件,并且能够保持原来的xml文件格式跟新生成的xml文件格式一致(思路是先把xml文件读取成xml格式的字符串,然后再根据该字符串生成新的xml文件);
public static boolean copyXmlFile(File pSourceFile, File pDestFile, String pEncoding) throws Exception { if (!pSourceFile.exists()) { throw new Exception("the sourceFile " + pSourceFile + " does not exist!"); } if (!pDestFile.exists()) { pDestFile.createNewFile(); } String fileContent = readXmlFile(pSourceFile, pEncoding); generateXmlFile(fileContent, pDestFile, pEncoding); return true; } public static String readXmlFile(File pFile, String pEncoding) throws Exception { InputStream is = null; BufferedReader br = null; try { is = new FileInputStream(pFile); br = new BufferedReader(new InputStreamReader(is, pEncoding)); String line = null; StringBuilder sb = new StringBuilder(); while ((line = br.readLine()) != null) { sb.append(line); sb.append(System.getProperty("line.separator")); } return sb.toString(); } finally { if (br != null) { br.close(); } if (is != null) { is.close(); } } }
4. 测试的jdk版本1.7,详细的代码请下载压缩包进行查看,本地已测试过
猜你喜欢
- java读写操作xml文件
- java XML文件解析,超简单DEMO
- java读取XML文件通用工具类(递归调用)
- XML文件解析java工具类dom4J使用实例
- Java通过jdom操作生成XML文件的实例代码下载
- 不依赖第三方jar包的通过java sax解析本地xml文件的实例代码
- Spring Batch对XML文件的读写操作demo实例
- spring基于多个xml文件配置实现初始化bean的实例
- java dom解析xml实现学生信息管理,包括增删改查功能
- Java XML解析的四种方法总结
- xml文件和java实体类(bean)相互转化 源码献上,导入(My)eclipse,可直接运行看效果。
- Jdom、Dom4j、W3c、String相互转换大全以及取Xml的属性值、设置Xml的属性值、删除Xm属性值
请下载代码后再发表评论
文件名:jaxb.zip,文件大小:9.48K
下载
- /
- /jaxb
- /jaxb/resources
- /jaxb/resources/jaxb_test_20160726093123.xml
- /jaxb/src
- /jaxb/src/com
- /jaxb/resources
- /jaxb
相关代码
最近下载
最近浏览
langwang0771
10月18日
暂无贡献等级
1443251642 LV1
2022年12月19日
wado001 LV1
2021年10月9日
szh922 LV1
2021年7月5日
张洪 LV1
2021年7月1日
596350754 LV1
2021年6月26日
15939671505
2020年12月18日
暂无贡献等级
liuguojun920 LV6
2020年9月9日
1234567891011 LV5
2020年6月26日
zyd200888 LV2
2020年5月22日