读取xml

这篇具有很好参考价值的文章主要介绍了读取xml。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

将json文件读取成字符串

public static String getJsonStr(File jsonFile){
   try {
        FileReader fileReader = new FileReader(jsonFile);
        Reader reader = new InputStreamReader(new FileInputStream(jsonFile),"utf-8");
        int ch = 0;
        StringBuffer sb = new StringBuffer();
        while ((ch = reader.read()) != -1) {
            sb.append((char) ch);
        }
        fileReader.close();
        reader.close();
        return sb.toString();
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }
}

main方法解析json文件,转化成自定义对象集合并保存至数据库

public void Task1() {
    String json = "D:\\media\\resource\\RadarPic\\城镇预报数据.json";
    File jsonFile = new File(json);
    //通过上面那个方法获取json文件的内容
    String jsonData = this.getJsonStr(jsonFile);
    SevpChnWefcRffc sevpChnWefcRffc = JsonConverter.jsonString2Bean(jsonData, SevpChnWefcRffc.class);
    List<SevpChnWefcRffcItem> ds = sevpChnWefcRffc.getDs();
    for (List<SevpChnWefcRffcItem> l1 : ListUtils.splitList(ds, 20)) {
        if (l1.size() > 0) {
            int row1 = sevpChnWefcRffcMapper.insertSevpChnWefcRffc(l1);
        }
    }
}

json工具类

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.*;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class JsonConverter {
    private static ObjectMapper mapper = new ObjectMapper();
    public static String bean2Json(Object obj) {
        try {
            return mapper.writeValueAsString(obj);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
            return null;
        }
    }


    public static <T> T jsonString2Bean(String jsonStr, Class<T> objClass) {
        if (jsonStr == null) return null;
        try {
            return mapper.readValue(jsonStr, objClass);
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static <T> T jsonObject2Bean(Object jsonObject, Class<T> bean) {
        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        return mapper.convertValue(jsonObject, bean);
    }

    public static JsonNode jsonString2JsonNode(String jsonString) {
        if (jsonString == null) return null;
        try {
            return mapper.readTree(jsonString);
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

    public static Map<String, Object> jsonNode2HashMap(JsonNode jsonNode) {
        Map<String, Object> map = new HashMap<>();

        if (jsonNode.isObject()) {
            Iterator<Map.Entry<String, JsonNode>> fieldsIterator = jsonNode.fields();

            while (fieldsIterator.hasNext()) {
                Map.Entry<String, JsonNode> field = fieldsIterator.next();
                String key = field.getKey();
                JsonNode value = field.getValue();

                if (value.isValueNode()) {
                    map.put(key, value.asText());
                } else if (value.isObject() || value.isArray()) {
                    map.put(key, jsonNode2HashMap(value));
                }
            }
        } else if (jsonNode.isArray()) {
            int i = 0;

            for (JsonNode node : jsonNode) {
                if (node.isValueNode()) {
                    map.put(Integer.toString(i), node.asText());
                } else if (node.isObject() || node.isArray()) {
                    map.put(Integer.toString(i), jsonNode2HashMap(node));
                }
                i++;
            }
        }

        return map;
    }

    /**
     * 将JSON数据格式化并保存到文件中
     * @param jsonData 需要输出的json数
     * @param filePath 输出的文件地址
     * @return 结果
     */
    public static boolean saveJsonFile(Object jsonData, String filePath) {
        String content = JSON.toJSONString(jsonData, SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteDateUseDateFormat);
        boolean flag = true;
        try {
            File file = new File(filePath);
            if (!file.getParentFile().exists()) {
                boolean mkdirs = file.getParentFile().mkdirs();
            }
            if (file.exists()) {
                boolean delete = file.delete();
            }
            boolean newFile = file.createNewFile();
            Writer write = new OutputStreamWriter(Files.newOutputStream(file.toPath()), StandardCharsets.UTF_8);
            write.write(content);
            write.flush();
            write.close();
        } catch (Exception e) {
            e.printStackTrace();
            flag = false;
        }
        return flag;
    }
}

自定义类

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.List;

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
@EqualsAndHashCode
@Data
public class SevpChnWefcRffc {
    @JsonProperty(value = "DS")
    private List<SevpChnWefcRffcItem> ds;
}
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
@EqualsAndHashCode
@Data
public class SevpChnWefcRffcItem {
    /**
     * ID
     */
    private Integer id;

    /**
     * 省名
     */
    @JsonProperty(value = "Province")
    private String province;

    /**
     * 地市名
     */
    @JsonProperty(value = "City")
    private String city;

    /**
     * 行政编码
     */
    @JsonProperty(value = "Admin_Code_CHN")
    private String adminCodeChn;

    /**
     * 区县名
     */
    @JsonProperty(value = "Cnty")
    private String cnty;

    /**
     * 区站号
     */
    @JsonProperty(value = "Station_Id_C")
    private String stationIdC;

    /**
     * 站名
     */
    @JsonProperty(value = "Station_Name")
    private String stationName;

    /**
     * 测站级别
     */
    @JsonProperty(value = "Station_levl")
    private String stationLevel;

    /**
     * 纬度
     */
    @JsonProperty(value = "Lat")
    private String lat;

    /**
     * 经度
     */
    @JsonProperty(value = "Lon")
    private String lon;

    /**
     * 资料时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonProperty(value = "Datetime")
    private Date dateTime;
    /**
     * 产品描述
     */
    @JsonProperty(value = "PROD_DESC")
    private String prodDesc;

    /**
     * 产品代码
     */
    @JsonProperty(value = "PROD_CODE")
    private String prodCode;
    /**
     * 预报时效
     */
    @JsonProperty(value = "Validtime")
    private Integer validTime;

    /**
     * 温度
     */
    @JsonProperty(value = "TEM")
    private Double tem;

    /**
     * 气压
     */
    @JsonProperty(value = "PRS")
    private Double prs;

    /**
     * 风向
     */
    @JsonProperty(value = "WIN_D")
    private Double winD;

    /**
     * 风速
     */
    @JsonProperty(value = "WIN_S")
    private Double winS;

    /**
     * 相对湿度
     */
    @JsonProperty(value = "RHU")
    private Double rhu;

    /**
     * 可降水分
     */
    @JsonProperty(value = "PRE_PRE_Fore")
    private Double prePreFore;

    /**
     * 天气现象
     */
    @JsonProperty(value = "WEP")
    private Integer wep;

    /**
     * 能见度
     */
    @JsonProperty(value = "VIS")
    private Double vis;
}

大集合转化成若干个小集合文章来源地址https://www.toymoban.com/news/detail-666943.html

import java.util.ArrayList;
import java.util.List;

public class ListUtils {
    /**
     * 将集合拆分成若干个batch,并将batch存于新的集合
     * @param list 目标集合
     * @param size batch大小
     * List m: [a, b, c, d, e, f, g]
     * -> splitList(m, 3)
     * -> [[a, b, c], [d, e, f], [g]]
     * @return List<Batch>
     */
    public static <T> List<List<T>> splitList(List<T> list, int size) {
        if (list == null) return null;
        List<List<T>> l1 = new ArrayList<>();
        if (list.size() <= size) l1.add(list);
        else {
            int s = list.size();
            int x = s / size;
            int y = s % size;
            if (y != 0) x = x + 1;
            int index = 0;
            for (int i = 0; i < x; i++) {
                List<T> l2 = new ArrayList<>();
                for (int j = 0; j < list.size(); j++) {
                    l2.add(list.get(index));
                    index++;
                    if (l2.size() == size) {
                        l1.add(l2);
                        break;
                    } else if (x == l1.size()+1 && y == l2.size()) {
                        l1.add(l2);
                        break;
                    }
                }
            }
        }
        return l1;
    }
}

到了这里,关于读取xml的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JAVA读取文本转成JSON

    要将包含制表符的文本数据转换为JSON格式,你可以使用Java的JSON库,例如Jackson或Gson。以下是一个使用Jackson库将包含制表符的文本数据转换为JSON的示例代码: 如果使用Maven,可以在pom.xml文件中添加以下依赖: ** ** 总结: 在这个例子中,tabSeparatedData变量包含制表符分隔的文

    2024年01月23日
    浏览(34)
  • java— 读取JSON文件的多种方式

    大部分内容参考自: https://blog.csdn.net/csdn_halon/article/details/120287992 在开发过程中有时会遇到需要读取本地.json文件的需求,通常会自己写Reader代码去读,但是这么做写出来的代码有些繁琐(需要关流、创建StringBuilder对象等操作)。最近发现几个小工具可以让需求代码变得更加

    2024年02月11日
    浏览(54)
  • java 读取json文件的2种方式

    研发过程中,经常会涉及到读取配置文件等重复步骤,也行是.conf文件,也许是.json文件,但不管如何他们最终都需要进入到jave的inputStream里面。下面以读取.json文件为例 需要1个参数: fileName: 文件名,一般为绝对路径,不然可能会找不到。或者和java文件同一个路径下 最终

    2024年02月11日
    浏览(41)
  • Java中JSON数据的读取和解析

            在做springboot项目时用到了json文件读取和解析,所以在这里记录一下学习过程中总结的一些点,希望对大家有帮助~ 配置fastJson 构建工具类(方便多次调用时重复使用) json文件示例(以geojson为例,数据结构比较复杂,只是层次比较多) 调用工具类读取数据: 读取

    2024年02月12日
    浏览(52)
  • Java如何快速读取&解析JSON数据(文件),获取想要的内容?

    手打不易,如果转摘,请注明出处! 注明原文: https://zhangxiaofan.blog.csdn.net/article/details/132764186 目录 前言 准备工作 Json数据(示例) 解析Json文件 第一步:创建一个空类 第二步:使用 Gsonformat 插件  第三步:复制Json内容,创建对应类 第四步:读取Json文件,提取目标数据

    2024年02月05日
    浏览(77)
  • 在.NetFramework中使用Microsoft.Extensions.Configuration 读取Json和XML

    //需要安装 Microsoft.Extensions.Configuration; //Microsoft.Extensions.Configuration.json //Microsoft.Extensions.Configuration.xml //Microsoft.Extensions.Configuration.Binder; //注意: json 的key中不能出现冒号\\\":\\\" //XML的 Atrribute中不能出现 “Name”, 且不能使用根节点(从第一个子节点开始) 实体类: XML: Json:

    2024年02月11日
    浏览(42)
  • .NET配置文件大揭秘:轻松读取JSON、XML、INI和环境变量

      概述: .NET中的IConfiguration接口提供了一种多源读取配置信息的灵活机制,包括JSON、XML、INI文件和环境变量。通过示例,清晰演示了从这些不同源中读取配置的方法,使配置获取变得方便且易于扩展。这种方式适用于不同场景,如API密钥、数据库连接等,为应用提供了高度

    2024年02月20日
    浏览(39)
  • Java基础篇--XML简介

    目录 什么是 XML XML 用途 XML 语法 XML文档声明 根元素 元素 属性 注释 转义字符 CDATA区 处理指令 XML的解析 开发中比较常见的解析方式有三种 DOM解析方式: SAX解析方式: PULL解析方式: 常见的解析开发包 DOM解析原理及结构模型 dom4j技术栗子 XML的约束 约束语法: 内部关联:

    2024年02月11日
    浏览(36)
  • Java基础进阶02-xml

    1.学习网站: https://www.w3schoo1.com.cn 标记语言:通过标签来描述数据的一门语言(标签有时我们也将其称之为元素) 可扩展:标签的名字是可以自定义的 2.作用 用于进行存储数据和传输数据 作为软件的配置文件 3.XML标签 标签由一对尖括号和合法标识符组成 user 标签必须成对出现

    2024年01月25日
    浏览(30)
  • 如何使用 Java 将 JSON 文件读取为字符串?这三种方法很管用!

    JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,它可以用来存储和传输结构化的数据。在 Java 中,有多种方法可以将 JSON 文件读取为字符串,本文将介绍其中的几种。 java.io 包中提供了一些类,如 FileReader、BufferedReader、InputStreamReader 等,可以用来读取文件的内容。

    2024年02月01日
    浏览(90)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包