| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- package com.ydtech.utils;
- /**
- * @author gws
- * @description:TODO
- * @date 2022-07-15 17:36
- */
- public class XMLFormat {
- //格式化XML字符串
- public static String format(String originStr) {
- String XMLInfo = null;
- StringBuilder sb = new StringBuilder();
- try {
- if (originStr != null) {
- if (originStr.trim().startsWith("<?")) {
- //包含XML版本编码
- XMLInfo = originStr.trim().substring(0, originStr.trim().indexOf("?>") + 2);
- originStr = originStr.trim().substring(originStr.trim().indexOf("?>") + 2, originStr.trim().length());
- }
- char[] charArray = originStr.toCharArray();
- int openCount = 0;
- int closeCount = 0;
- int lastNode = -1;//0 <> 1 </>
- for (int i = 0; i < charArray.length; i++) {
- // < open and 换行
- if (charArray[i] == '<' && i != charArray.length - 1 && charArray[i + 1] != '/' && charArray[i + 1] != '!') {
- lastNode = 0;
- enterAndTabs(sb, openCount - closeCount);
- sb.append(charArray[i]);
- openCount++;
- continue;
- }
- // </ close and 换行
- if (charArray[i] == '<' && i != charArray.length - 1 && charArray[i + 1] == '/') {
- // 0 表示 开-闭 ,不换行
- if (lastNode != 0) {
- enterAndTabs(sb, openCount - closeCount - 1);
- }
- sb.append(charArray[i]).append(charArray[++i]);
- closeCount++;
- lastNode = 1;
- continue;
- }
- // 自闭合
- if (charArray[i] == '>' && i > 0 && charArray[i - 1] == '/') {
- sb.append(charArray[i]);
- closeCount++;
- continue;
- }
- //反着来了
- sb.append(charArray[i]);
- }
- }
- } catch (Exception exception) {
- }
- sb.insert(0, XMLInfo);
- return sb.toString();
- }
- /**
- * 回车与制表符
- *
- * @param sb StringBuilder
- * @param tabCount 多少个制表符
- */
- private static void enterAndTabs(StringBuilder sb, int tabCount) {
- sb.append("\n");
- while (tabCount-- > 0) {
- sb.append(" ");
- }
- }
- public static void main(String[] args) {
- String xmlString_sign = "<RequestData><requestHead><seqNo>1d6ff938-ada5-4f39-9fc1-e</seqNo><consumerID>102120</consumerID><consumerAccessKey>123456test</consumerAccessKey> <transCode>C1</transCode><transTime>2022-07-12 18:00:00</transTime></requestHead><requestBody><cityCode>140400</cityCode><cityName>长治市</cityName><frameNo>LVVDA11B7AD256799</frameNo><licenseNo>晋DW0717</licenseNo><engineNo>NAAG02917</engineNo><enrollDate>2010-08-23</enrollDate><modelName>奇瑞SQR7150A130轿车</modelName><modelCode/><newVehicle/><extendInfo/></requestBody></RequestData>";
- System.out.println(111);
- System.out.println(format(xmlString_sign));
- }
- }
|