精华内容
下载资源
问答
  • Java生成XML的缩进和换行SAX 2010-04-26 13:51 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zxcvbnmluton/archive/2010/04/26/5528747.aspx 二 SAX 用SAX生成xml并换行缩进 package xml; ...
    Java生成XML的缩进和换行SAX
    2010-04-26 13:51

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zxcvbnmluton/archive/2010/04/26/5528747.aspx

    二 SAX 用SAX生成xml并换行缩进

    package xml;

    import java.io.FileOutputStream;
    import java.io.StringWriter;

    import javax.xml.transform.OutputKeys;
    import javax.xml.transform.Result;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerConfigurationException;
    import javax.xml.transform.sax.SAXTransformerFactory;
    import javax.xml.transform.sax.TransformerHandler;
    import javax.xml.transform.stream.StreamResult;

    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.AttributesImpl;

    public class XMLHandler {

    public String createXMLFile() {
       String xmlStr = null;
       try {
        Result resultXml = new StreamResult(new FileOutputStream("E://cities.xml"));
        StringWriter writerStr = new StringWriter();
        SAXTransformerFactory sff = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
        TransformerHandler th = sff.newTransformerHandler();
        Transformer transformer = th.getTransformer();
        transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");   
        th.setResult(resultXml);
        th.startDocument();
        AttributesImpl attr = new AttributesImpl();
        th.startElement("", "", "country", attr);
        th.startElement("", "", "china", attr);

        th.startElement("", "", "city", attr);
        String bj = "Beijing";
        th.characters(bj.toCharArray(), 0, bj.length());
        th.endElement("", "", "city");

        th.startElement("", "", "city", attr);
        String sh = "Shanghai";
        th.characters(sh.toCharArray(), 0, sh.length());
        th.endElement("", "", "city");

        th.endElement("", "", "china");
        th.endElement("", "", "country");
        th.endDocument();
        xmlStr = writerStr.getBuffer().toString();
       } catch (TransformerConfigurationException e) {
        e.printStackTrace();
       } catch (SAXException e) {
        e.printStackTrace();
       } catch (Exception e) {
        e.printStackTrace();
       }
       return xmlStr;
    }

    public static void main(String args[]) {
       XMLHandler xh = new XMLHandler();
       xh.createXMLFile();
    }
    }

    用SAX生成的xml如下

    <?xml version="1.0" encoding="UTF-8"?><country><china><city>Beijing</city><city>Shanghai</city></china></country>

    同样没有换行和缩进

    在代码中增加

    transformer.setOutputProperty(OutputKeys.INDENT, "yes");

    后生成的xml有了换行但仍没有缩进

    <?xml version="1.0" encoding="UTF-8"?>
    <country>
    <china>
    <city>Beijing</city>
    <city>Shanghai</city>
    </china>
    </country>

    同样按照DOM中的方法加空格

    String four = "\n    ";
    TransformerHandler.characters(four.toCharArray(),0,four.length());

    最终SAX代码如下:

    package xml;

    import java.io.FileOutputStream;
    import java.io.StringWriter;

    import javax.xml.transform.OutputKeys;
    import javax.xml.transform.Result;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerConfigurationException;
    import javax.xml.transform.sax.SAXTransformerFactory;
    import javax.xml.transform.sax.TransformerHandler;
    import javax.xml.transform.stream.StreamResult;

    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.AttributesImpl;

    public class XMLHandler {

    public String createXMLFile() {
       String xmlStr = null;
       try {
        Result resultXml = new StreamResult(new FileOutputStream("E://cities.xml"));
        StringWriter writerStr = new StringWriter();
        SAXTransformerFactory sff = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
        TransformerHandler th = sff.newTransformerHandler();
        Transformer transformer = th.getTransformer();
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");   
        th.setResult(resultXml);
        th.startDocument();
        String four = "\n    ";
        String eight = "\n        ";
        AttributesImpl attr = new AttributesImpl();
       
        th.startElement("", "", "country", attr);
       
        th.characters(four.toCharArray(),0,four.length());
       
        th.startElement("", "", "china", attr);
       
        th.characters(eight.toCharArray(),0,eight.length());

        th.startElement("", "", "city", attr);
        String bj = "Beijing";
        th.characters(bj.toCharArray(), 0, bj.length());
        th.endElement("", "", "city");

        th.characters(eight.toCharArray(),0,eight.length());
       
        th.startElement("", "", "city", attr);
        String sh = "Shanghai";
        th.characters(sh.toCharArray(), 0, sh.length());
        th.endElement("", "", "city");

        th.characters(four.toCharArray(),0,four.length());
       
        th.endElement("", "", "china");
        th.endElement("", "", "country");
        th.endDocument();
        xmlStr = writerStr.getBuffer().toString();
       } catch (TransformerConfigurationException e) {
        e.printStackTrace();
       } catch (SAXException e) {
        e.printStackTrace();
       } catch (Exception e) {
        e.printStackTrace();
       }
       return xmlStr;
    }

    public static void main(String args[]) {
       XMLHandler xh = new XMLHandler();
       xh.createXMLFile();
    }
    }

    生成的XML

    <?xml version="1.0" encoding="UTF-8"?>
    <country>
        <china>
            <city>Beijing</city>
            <city>Shanghai</city>
        </china>
    </country>

     

    展开全文
  • Java生成XML的缩进和换行

    万次阅读 2010-04-26 10:06:00
    一 DOM 以下代码用DOM是生成一个XML文档package xml;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import javax.xml.parsers.DocumentBuilder;import javax.xml.p

    一 DOM 以下代码用DOM是生成一个XML文档

     

    生成的xml如下

    xml所有内容都在一行里面,没有换行和缩进

    现在在代码

    后面加上

     

    再次生成xml

     


    这次有了换行,但是仍然没有缩进。为此我查找了多次google和百度都没有找到解决方法,可能是有或者自己没耐心,就想了办法来处理。在前面加空格

    最后代码为

    最终生成的xml为

     

    二 SAX 用SAX生成xml并换行缩进

    用SAX生成的xml如下

    同样没有换行和缩进

    在代码中增加

    后生成的xml有了换行但仍没有缩进

    同样按照DOM中的方法加空格

    最终SAX代码如下:

    生成的XML

    展开全文
  • xml文件添加新节点时没有缩进和换行的解决方案

    xml文件添加新节点时没有缩进和换行的解决方案

    参考文章:

    (1)xml文件添加新节点时没有缩进和换行的解决方案

    (2)https://www.cnblogs.com/iamdongyang/p/11765782.html


    备忘一下。


    展开全文
  • 小月夕在业务遇到一个需要,需要把来自后端的一个对象转化为md格式并进行渲染。 首先尝试了直接把对象转为json,然后前后分别拼接上```json ```即可. 但是效果如下 {"err_status":0,"principal":null,"_id":"5eaac...

    小月夕在业务中遇到一个需要,需要把来自后端的一个对象转化为md格式并进行渲染。
    首先尝试了直接把对象转为json,然后前后分别拼接上```json ```即可.
    但是效果如下

    {"err_status":0,"principal":null,"_id":"5eaac83927e3e77ecc7e6a68","ip":"::ffff:127.0.0.1","type":"POST","err_type":"TypeError","err_msg":"TypeError: articles.aggregate(...).populate is not a function\n\t   at module.exports (C:\\Users\\w\\Desktop\\blog\\blog-api\\router\\routers\\article\\getAllArticle.js:23:12)\n\t   at C:\\Users\\w\\Desktop\\blog\\blog-api\\router\\routers\\article\\index.js:30:34\n\t   at Layer.handle [as handle_request] (C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\layer.js:95:5)\n\t   at next (C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\route.js:137:13)\n\t   at Route.dispatch (C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\route.js:112:3)\n\t   at Layer.handle [as handle_request] (C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\layer.js:95:5)\n\t   at C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\index.js:281:22\n\t   at Function.process_params (C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\index.js:335:12)\n\t   at next (C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\index.js:275:10)\n\t   at Function.handle (C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\index.js:174:3)\n\t   at router (C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\index.js:47:12)\n\t   at Layer.handle [as handle_request] (C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\layer.js:95:5)\n\t   at trim_prefix (C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\index.js:317:13)\n\t   at C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\index.js:284:7\n\t   at Function.process_params (C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\index.js:335:12)\n\t   at Immediate.next (C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\index.js:275:10)","req_data":{"body":{"className":"前端"},"query":{}},"err_file":"C:\\Users\\w\\Desktop\\blog\\blog-api\\router\\routers\\article\\getAllArticle.js","date":"2020-04-30 20:44:41","__v":0}
    

    渲染结果并不会将json跳行和格式化(就连CSDN都无法自动格式化,可想而知这是需要自己实现的)。
    然后我尝试直接对逗号后面加上换行(效果如下)

    {"err_status":0,
    "principal":null,
    "_id":"5eaac83927e3e77ecc7e6a68",
    "ip":"::ffff:127.0.0.1",
    "type":"POST",
    "err_type":"TypeError",
    "err_msg":"TypeError: articles.aggregate(...).populate is not a function\n\t   at module.exports (C:\\Users\\w\\Desktop\\blog\\blog-api\\router\\routers\\article\\getAllArticle.js:23:12)\n\t   at C:\\Users\\w\\Desktop\\blog\\blog-api\\router\\routers\\article\\index.js:30:34\n\t   at Layer.handle [as handle_request] (C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\layer.js:95:5)\n\t   at next (C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\route.js:137:13)\n\t   at Route.dispatch (C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\route.js:112:3)\n\t   at Layer.handle [as handle_request] (C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\layer.js:95:5)\n\t   at C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\index.js:281:22\n\t   at Function.process_params (C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\index.js:335:12)\n\t   at next (C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\index.js:275:10)\n\t   at Function.handle (C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\index.js:174:3)\n\t   at router (C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\index.js:47:12)\n\t   at Layer.handle [as handle_request] (C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\layer.js:95:5)\n\t   at trim_prefix (C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\index.js:317:13)\n\t   at C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\index.js:284:7\n\t   at Function.process_params (C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\index.js:335:12)\n\t   at Immediate.next (C:\\Users\\w\\Desktop\\blog\\blog-api\\node_modules\\express\\lib\\router\\index.js:275:10)",
    "req_data":{"body":{"className":"前端"},
    "query":{}},
    "err_file":"C:\\Users\\w\\Desktop\\blog\\blog-api\\router\\routers\\article\\getAllArticle.js",
    "date":"2020-04-30 20:44:41",
    "__v":0}
    

    后面尝试了各种replace规则效果都不佳

    迫不得已只能自己封装一个生成字符串的规则(当时使用的是vue开发,所以并没有对方法进行兼容ie10-的打算),代码如下

    function ObjToRetractJsonStr(obj, num) {
                  if(!num){//是否第一层
                    num = 1;
                  }
                  let t = ""
                  for(let k in obj){
                    if(obj[k] !== null && typeof obj[k] === "object"){
                      t += `${"\t".repeat(num)}"${k}": ${ObjToRetractJsonStr(obj[k],num+1)},\n`
                    }else {
                      t += `${"\t".repeat(num)}"${k}": ${typeof obj[k] === "string"?"\""+obj[k]+"\"":obj[k]},\n`
                    }
                  }
                  //}或者]结束符缩进
                  if(Array.isArray(obj)){
                    //数组采用[]包裹
                    return `[\n${t}${"\t".repeat(num-1)}]`
                  }
                  return `{\n${t}${"\t".repeat(num-1)}}`
       }
    
    //生成md语法的json代码块
    text = "```json\n"+ObjToRetractJsonStr(this.resData)+"\n```"
    

    效果如下

    {
    	"err_status": 0,
    	"principal": null,
    	"_id": "5eaac83927e3e77ecc7e6a68",
    	"ip": "::ffff:127.0.0.1",
    	"type": "POST",
    	"err_type": "TypeError",
    	"err_msg": "TypeError: articles.aggregate(...).populate is not a function
    	   at module.exports (C:\Users\w\Desktop\blog\blog-api\router\routers\article\getAllArticle.js:23:12)
    	   at C:\Users\w\Desktop\blog\blog-api\router\routers\article\index.js:30:34
    	   at Layer.handle [as handle_request] (C:\Users\w\Desktop\blog\blog-api\node_modules\express\lib\router\layer.js:95:5)
    	   at next (C:\Users\w\Desktop\blog\blog-api\node_modules\express\lib\router\route.js:137:13)
    	   at Route.dispatch (C:\Users\w\Desktop\blog\blog-api\node_modules\express\lib\router\route.js:112:3)
    	   at Layer.handle [as handle_request] (C:\Users\w\Desktop\blog\blog-api\node_modules\express\lib\router\layer.js:95:5)
    	   at C:\Users\w\Desktop\blog\blog-api\node_modules\express\lib\router\index.js:281:22
    	   at Function.process_params (C:\Users\w\Desktop\blog\blog-api\node_modules\express\lib\router\index.js:335:12)
    	   at next (C:\Users\w\Desktop\blog\blog-api\node_modules\express\lib\router\index.js:275:10)
    	   at Function.handle (C:\Users\w\Desktop\blog\blog-api\node_modules\express\lib\router\index.js:174:3)
    	   at router (C:\Users\w\Desktop\blog\blog-api\node_modules\express\lib\router\index.js:47:12)
    	   at Layer.handle [as handle_request] (C:\Users\w\Desktop\blog\blog-api\node_modules\express\lib\router\layer.js:95:5)
    	   at trim_prefix (C:\Users\w\Desktop\blog\blog-api\node_modules\express\lib\router\index.js:317:13)
    	   at C:\Users\w\Desktop\blog\blog-api\node_modules\express\lib\router\index.js:284:7
    	   at Function.process_params (C:\Users\w\Desktop\blog\blog-api\node_modules\express\lib\router\index.js:335:12)
    	   at Immediate.next (C:\Users\w\Desktop\blog\blog-api\node_modules\express\lib\router\index.js:275:10)",
    	"req_data": {
    		"body": {
    			"className": "前端",
    		},
    		"query": {
    		},
    	},
    	"err_file": "C:\Users\w\Desktop\blog\blog-api\router\routers\article\getAllArticle.js",
    	"date": "2020-04-30 20:44:41",
    	"__v": 0,
    }
    

    达到要求(内容跳行不会json高亮,如果想高亮不跳行即可)

    IE兼容方案推荐
    (一个天上飞的理论而已,由于小月夕当时时间并不是很充裕,就无法亮出具体代码了)
    可以尝试借鉴栈计算算式的原理,对未格式化的json传进行一个关键符合拆分后进行栈操作,记录一下当前数据的深度并在其中加入对应数量的缩进和换行符即可。

    展开全文
  • 问题描述:当用UltraEd(14.0版本)编写Java代码时,当遇到{}换行时,希望”}”自动与上一行对齐,如下: 1 class T { 2 3 } 但实际情况是第二行自动缩进了,如下: 1 class T { 2 3 } 解决.....
  • IDEA 修改 Tab缩进字符、换行格式

    千次阅读 2020-05-13 14:11:02
    1、修改换行符为 Unix 格式(\n),默认采用系统格式,windows 格式为 \r\n Setting -> Editor -> Code Style 2、修改 Tab 缩进为 4 个空格 Setting -> Editor -> Code Style -> Java
  • Delphi里面默认就有代码编辑缩进线,这在编写逻辑复杂的大块代码时候非常有好处,可以清楚地看到每块代码的范围,下面就是Delphi里面代码编辑缩进线的截图: 非常棒的效果,我喜欢,在处理复杂逻辑代码时候,这个...
  • JAVA代码规范》(三)通用代码格式 - 缩进、行长度、换行、空行、空格(2.2-2.6) ... ... 2.2 缩进 4个空格常被作为缩进排版的一个单位,以表示缩进,显示程序的层次级别,增加程序的可读性。不要在源代码...
  • css首行缩进字符间距行高Hey guys! Let me walk you through the next part of our dark-style code academy. In this post, we will discover some other ways how to slow down the reading speed of your code. ...
  • java编码规范_缩进和注释

    万次阅读 2010-01-26 19:36:00
    1. 缩进排版(Indentation)4个空格常被作为缩进排版的一个单位。...3.1 行长度(Line Length)尽量避免一行的长度超过80个字符,因为很多终端工具不能很好处理之。 注意:鉴于Eclipse开发工具工作区的左
  • java中换行原则

    千次阅读 2019-02-16 14:19:44
    java中换行原则
  • 这两天python-cn邮件列表有一条thread发展的特别长,题目是《python的代码缩进真是坑爹》(地址),楼主在一台电脑上用KOMODO写的代码到另一台电脑上就不能运行了,调试后才发现是代码缩进的问题,为此楼主表示...
  • 这两天python-cn邮件列表有一条thread发展的特别长,题目是《python的代码缩进真是坑爹》(地址),楼主在一台电脑上用KOMODO写的代码到另一台电脑上就不能运行了,调试后才发现是代码缩进的问题,为此楼主表示...
  • I have an issue related to wrapping of text in pdf format. For all the formats like xls,rtf, and pptx the report works fine,however in pdf some text gets wrapped i.e. some letters of the text especial...
  • python的代码缩进

    千次阅读 2017-04-29 23:48:28
    要求严格的代码缩进是python语法的一大特色,就像C语言家族(C、C++、Java、C#等等)的花括号一样重要,在大多数场合还有必要。 在很多代码规范里面也都有要求代码书写按照一定的规则进行换行和代码缩进,但是这些...
  • java---code style ---formatter 首先新建一个,如MyStyle。因为eclipse自带的不能编辑 编辑,在tab的Line Wrapping设置 最大的line width...Eclipse设置代码缩进为空格缩进https://blog.csdn.net/moonsun_523/a...
  • XML添加节点换行和缩进问题

    千次阅读 2018-05-20 15:54:50
    问题当我们向XML文件新增节点时,可能会遇到新增节点写在了一行,或者分行后没有缩进。这样会影响XML文件的美观性,以及我们可阅读性。今天我们用DOM解决以上问题,假设有一个XML文件:Book.xml,以下就是我们要...
  • 有时候写代码一行写了很多,但是按下ctrl+shift+F 格式化代码的时候,Eclipse为我们将代码换行了,Eclipse倒是很热情,但是有些时候那一行嗲吗很紧凑完全没有必要换行.Eclispe 等于为我们帮了倒忙,这时候可以设置...
  • 问题:Word包含表格导出数据需要换行时不论是使用“\r\n”还是“^p”都无法实现 下面为解决代码: //Word表格内数据换行 //逐步获取表格内内容 //获取所有表格 List<XWPFTable> list2=docx....
  • JTextPane 如何换行缩进

    千次阅读 2010-11-16 22:12:00
    正在做一个局域网通信软件,发送消息的编辑器是用JTextPane做的,我希望可以实现类似QQ的效果, 即:除了消息头(上面代表好友时间的那行)不缩进外,消息内容每行都要缩进两个位置 请问怎么实现...
  • 关于sublime的代码缩进报错问题

    千次阅读 2019-04-20 17:58:00
    有时候在sublime写python代码的时候经常会遇到代码...报错说你的代码缩进中不一致使用制表符空格,简单地说就是缩进错误,我们都知道,python不是像java那样有大括号括着的,都是换行,缩进 可是上面的代码看着明...
  • 问题描述:当用UltraEd(14.0版本)编写Java代码时,当遇到{}换行时,希望”}”自动与上一行对齐,如下:classT{}但实际情况是第二行自动缩进了,如下:classT{} 解决方法: (1)在菜单 高级->配置-&...
  • python:代码缩进

    2017-07-10 15:08:45
    这两天python-cn邮件列表有一条thread发展的特别长,题目是《python的代码缩进真是坑爹》(地址),楼主在一台电脑上用KOMODO写的代码到另一台电脑上就不能运行了,调试后才发现是代码缩进的问题,为此楼主表示...
  • python中缩进是什么

    千次阅读 2019-12-04 01:19:53
    python缩进是什么 要求严格的代码缩进是python语法的一大特色,就像C语言家族(C、C++、Java等等)的花括号一样重要,...在很多代码规范里面也都有要求代码书写按照一定的规则进行换行和代码缩进,但是这些要...
  • 谈谈代码缩进

    万次阅读 2006-09-24 00:43:00
    在有关代码风格的问题,最为显眼的可以说就是代码缩进了。所谓缩进,是为了在每一行的代码左端空出一部分长度,使得更加清晰地从外观上看出程序的逻辑结构。先举一个正确缩进的例子:int kmp_match(char t[], ...
  • 我看Python代码缩进

    2017-09-05 17:42:03
    这两天python-cn邮件列表有一条thread发展的特别长,题目是《python的代码缩进真是坑爹》(地址),楼主在一台电脑上用KOMODO写的代码到另一台电脑上就不能运行了,调试后才发现是代码缩进的问题,为此楼主表示...
  • Python代码缩进 这两天python-cn邮件列表有一条thread发展的特别长,题目是《python的代码缩进真是坑爹》(地址),楼主在一台电脑上用KOMODO写的代码到另一台电脑上就不能运行了,调试后才发现是代码缩进的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,145
精华内容 6,058
关键字:

java代码中的缩进和换行

java 订阅