首页 > 其他分享 >转!XML文件和DOM Document、String字符串三种类型之间的相互转换

转!XML文件和DOM Document、String字符串三种类型之间的相互转换

时间:2023-07-24 10:44:19浏览次数:49  
标签:XML null return String DOM doc new Document

转自:https://www.cnblogs.com/fightingdeng1998/p/16047075.html


用的包是 org.w3c.dom.Document下的 /** * @Author dengzp * @Date 2022/3/22 * @Version 1.0 * @Description */ public class OperateXMLByDOM { /** * 将给定文件的内容或者给定 URI 的内容解析为一个 XML 文档,并且返回一个新的 DOM Document 对象 * * @param filePath 文件所在路径 * @return DOM的Document对象 * @throws Exception */ public static Document xml2Doc(String filePath) { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = null; FileInputStream inputStream = null; Document doc = null; try { builder = factory.newDocumentBuilder(); /* 通过文件方式读取,注意文件保存的编码和文件的声明编码要一致(默认文件声明是UTF-8) */ File file = new File(filePath); doc = builder.parse(file); /* 通过一个URL方式读取 */ URI uri = new URI(filePath); doc = builder.parse(uri.toString()); /* 通过java IO 流的读取 */ inputStream = new FileInputStream(filePath); doc = builder.parse(inputStream); return doc; } catch (Exception e) { return null; } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { return null; } } } } /** * Document 转换为 String 并且进行了格式化缩进 * * @param doc XML的Document对象 * @return String */ public static String doc2FormatString(Document doc) { StringWriter stringWriter = null; try { stringWriter = new StringWriter(); if (doc != null) { OutputFormat format = new OutputFormat(doc, "UTF-8", true); //format.setIndenting(true);//设置是否缩进,默认为true //format.setIndent(4);//设置缩进字符数 //format.setPreserveSpace(false);//设置是否保持原来的格式,默认为 false //format.setLineWidth(500);//设置行宽度 XMLSerializer serializer = new XMLSerializer(stringWriter, format); serializer.asDOMSerializer(); serializer.serialize(doc); return stringWriter.toString(); } else { return null; } } catch (Exception e) { return null; } finally { if (stringWriter != null) { try { stringWriter.close(); } catch (IOException e) { return null; } } } } /** * Document 转换为 String * * @param doc XML的Document对象 * @return String */ public static String doc2String(Document doc) { try { Source source = new DOMSource(doc); StringWriter stringWriter = new StringWriter(); Result result = new StreamResult(stringWriter); TransformerFactory factory = TransformerFactory.newInstance(); Transformer transformer = factory.newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.transform(source, result); return stringWriter.getBuffer().toString(); } catch (Exception e) { return null; } } /** * String 转换为 Document 对象 * * @param xml 字符串 * @return Document 对象 */ public static Document string2Doc(String xml) { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = null; Document doc = null; InputSource source = null; StringReader reader = null; try { builder = factory.newDocumentBuilder(); reader = new StringReader(xml); source = new InputSource(reader);//使用字符流创建新的输入源 doc = builder.parse(source); return doc; } catch (Exception e) { return null; } finally { if (reader != null) { reader.close(); } } } /** * Document 保存为 XML 文件 * * @param doc Document对象 * @param path 文件路径 */ public static void doc2XML(Document doc, String path) { try { Source source = new DOMSource(doc); Result result = new StreamResult(new File(path)); Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.transform(source, result); } catch (Exception e) { return; } } public static void main(String[] args) { Document doc = xml2Doc("/Users/dengzhaoping/Desktop/license.xml"); System.out.println("aa" + doc); System.out.println("bb" + doc2String(doc)); System.out.println("cc" + doc2FormatString(doc)); doc = string2Doc(doc2FormatString(doc)); doc2XML(doc, "1.xml"); }

  

 

标签:XML,null,return,String,DOM,doc,new,Document
From: https://www.cnblogs.com/wuyun-blog/p/17576618.html

相关文章

  • Failed to convert property value of type 'java.lang.String' to required typ
    标题:深入了解Spring框架中的类型转换异常概述:在开发过程中,我们经常会遇到类型转换的问题。尤其是在使用Spring框架进行开发时,经常会遇到“Failedtoconvertpropertyvalueoftype'java.lang.String'torequiredtype”的异常。本文将详细介绍这个异常的原因和解决方法,并提供......
  • python将xml文件转换为json
    转载自:如何使用Python实现XML转JSON-知乎(zhihu.com)代码:importosimportjsonimportxmltodictdefxml_to_JSON(xml):#格式转换try:convertJson=xmltodict.parse(xml,encoding='utf-8')jsonStr=json.dumps(convertJson,indent=1)......
  • 前端基础之BOM和DOM
    Js:js的三部分组成:ECMAScriptBOM(浏览器对象模型,就是js操作浏览器):大部分内容作为了解DOM(文档对象模型,js操作html文档、css样式等):需要熟练掌握window对象所有浏览器都支持window对象。它表示浏览器窗口。window对象常用方法:●window.innerHeight:浏览......
  • 提取MyBatis中XML语法构造SQL的功能
    提取MyBatis中XML语法构造SQL的功能MyBatis能够使用*.xml来编辑XML语法格式的SQL语句,常用的xml标签有<where>,<if>,<foreach>等。偶然遇到一个场景,只想使用MyBatis的解析XML语法生成SQL的功能,而不需其他功能,于是在@Select打断点,跟踪代码执行,后续发现和XML有关的类主要在包路......
  • java: 找不到符号 符号: 方法 findSql6(java.util.Map<java.lang.String,java.lan
    解决"java:找不到符号符号:方法findSql6(java.util.Map<java.lang.String,java.lan"错误作为经验丰富的开发者,当遇到编译错误时,我们需要仔细分析错误信息并采取相应的解决方法。在这个任务中,我们需要解决"java:找不到符号符号:方法findSql6(java.util.Map<java.lang.St......
  • map.xml文件报The content of element type "mapper" must match "(cache-ref|cache|r
    出现这个问题 是因为  <insert></insert>  <delete></delete>  <update></update>  <select></select>等标签写的不完整或者写错位置了比如<insert></insert>只写了一个,没有写结尾</insert>或者<insert></insert>中的</in......
  • Domain Adaptation(领域自适应)
    DomainAdaptation(领域自适应)当测试材料和训练材料差异较大时,即使训练时正确率高,在测试中不一定高例如:数字标识中,训练资料为黑白图片,测试资料为有色照片在已经用灰白图片做好的模型,测试有色图片正确率低,可以收集有色图片(没有标注)基本想法:找一个Network(FeatureExtract......
  • pom.xml中的<scope></scope>标签详解
       1、scope标签的值的种类:1、compile:默认值,可省略不写。此值表示该依赖需要参与到项目的编译、测试以及运行周期中,打包时也要包含进去。2、test:该依赖仅仅参与测试相关的工作,包括测试代码的编译和执行,不会被打包,例如:junit。3、runtime:该依赖项目无需参与项目的编译,不过后期的......
  • String常用方法
    String常用方法packagecom.tedu.api01.string_;/***@authorLIGENSEN*Date:2023/7/2214:09*/publicclassStringMethods{publicstaticvoidmain(String[]args){Strings1="Chinna";System.out.println(s1);//Ch......
  • file /usr/share/mysql/charsets/macroman.xml from install of MySQL-server-5.6
    MySQL服务器和字符集在使用MySQL数据库时,字符集是一个非常重要的概念。它决定了数据库中存储的数据如何表示和解释。MySQL支持多种字符集,每个字符集都有自己的编码方式和规则。在安装MySQL服务器时,我们可能会遇到如下错误提示信息:file/usr/share/mysql/charsets/macroma......