读取XML文件生成properties

web 访问实现

@RestController @RequestMapping("/file") public class xmlController { @Resource private JsonOneService jsonOneService; String pl = "/Users/zhangcheng/Downloads/pl-PL/messages.xml"; String tr = "/Users/zhangcheng/Downloads/tr-TR/messages.xml"; String ru = "/Users/zhangcheng/Downloads/ru-RU/messages.xml"; String hant = "/Users/zhangcheng/Downloads/zh-TW/messages.xml"; @GetMapping("/xml") public String page(String name) throws ParserConfigurationException, IOException, SAXException { String filePath1 = name; name = name+"messages_es.properties"; List<String> stringList = new ArrayList<>(); stringList.add(pl); stringList.add(tr); stringList.add(ru); stringList.add(hant); int num = 0; for(String path :stringList){ Map<String,String> map = new LinkedHashMap<>(); StringBuffer message = new StringBuffer(); File file = new File(path); // 创建一个DocumentBuilderFactory对象 DocumentBuilderFactory factory =                                                                                  DocumentBuilderFactory.newInstance(); // 使用工厂对象创建一个DocumentBuilder对象 DocumentBuilder builder = factory.newDocumentBuilder(); // 使用DocumentBuilder对象解析XML文件并得到一个Document对象 Document document = builder.parse(file); // 获取根元素 Element rootElement = document.getDocumentElement(); // 获取所有<row>元素 NodeList rowElements = rootElement.getElementsByTagName("row"); // 创建一个Languages对象 Languages languages = new Languages(); // 创建一个List来存储Language对象 List<Language> languageList = new ArrayList<>(); // 遍历每个<row>元素 for (int i = 0; i < rowElements.getLength(); i++) { Element rowElement = (Element) rowElements.item(i); // 创建一个Language对象 Language language = new Language(); // 获取<row>元素下的<field>元素 NodeList fieldElements =                                                                                                                   rowElement.getElementsByTagName("field"); // 遍历每个<field>元素 for (int j = 0; j < fieldElements.getLength(); j++) { Element fieldElement = (Element) fieldElements.item(j); String fieldName = fieldElement.getAttribute("name"); String fieldValue = fieldElement.getTextContent(); // 根据fieldName设置Language对象的属性值 switch (fieldName) { case "id": language.setId(Long.parseLong(fieldValue)); break; case "key_name": language.setKeyName(fieldValue); break; case "value_name": language.setValueName(fieldValue); break; default: break; } } map.put(language.getKeyName(),language.getValueName()); } Properties props = new OrderedProperties(); props.load(new FileReader(name)); // 将properties转换为LinkedHashMap Map<String, String> data = new LinkedHashMap<>();; for (String key : props.stringPropertyNames()) { if(map.get(key)!=null){ data.put(key, map.get(key)); message.append(key).append("=").append(map.get(key)).append("\n"); } } String filePath = ""; if(num==0){ filePath = filePath1+"messages_pl.properties"; } if(num==1){ filePath = filePath1+"messages_tr.properties"; } if(num==2){ filePath = filePath1+"messages_ru.properties"; } if(num==3){ filePath = filePath1+"messages_hant.properties"; } Properties properties = new Properties(); // 将Map中的数据写入Properties对象 properties.putAll(data); try (FileOutputStream output = new FileOutputStream(filePath)) { for (Map.Entry<String, String> entry : data.entrySet()) { String line = entry.getKey() + "=" + entry.getValue() + System.lineSeparator(); output.write(line.getBytes()); } } catch (IOException e) { e.printStackTrace(); } num++; } return String.valueOf(""); } // "/Users/zhangcheng/Downloads/服务器-新增语言/pl-PL/enJson.xml"





// 读取xml 文件 public static void main(String[] args) throws Exception { File file = new File("/Users/zhangcheng/Downloads/服务器-新增语言/pl-PL/enJson.xml" ); // 创建一个DocumentBuilderFactory对象 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); // 使用工厂对象创建一个DocumentBuilder对象 DocumentBuilder builder = factory.newDocumentBuilder(); // 使用DocumentBuilder对象解析XML文件并得到一个Document对象 Document document = builder.parse(file); // 获取根元素 Element rootElement = document.getDocumentElement(); // 获取所有<row>元素 NodeList rowElements = rootElement.getElementsByTagName("row"); // 创建一个Languages对象 Languages languages = new Languages(); // 创建一个List来存储Language对象 List<Language> languageList = new ArrayList<>(); // 遍历每个<row>元素 for (int i = 0; i < rowElements.getLength(); i++) { Element rowElement = (Element) rowElements.item(i); // 创建一个Language对象 Language language = new Language(); // 获取<row>元素下的<field>元素 NodeList fieldElements = rowElement.getElementsByTagName("field"); // 遍历每个<field>元素 for (int j = 0; j < fieldElements.getLength(); j++) { Element fieldElement = (Element) fieldElements.item(j); String fieldName = fieldElement.getAttribute("name"); String fieldValue = fieldElement.getTextContent(); // 根据fieldName设置Language对象的属性值 switch (fieldName) { case "id": language.setId(Long.parseLong(fieldValue)); break; case "key_name": language.setKeyName(fieldValue); break; case "value_name": language.setValueName(fieldValue); break; default: break; } } // 将Language对象添加到List中 languageList.add(language); } // 将List设置到Languages对象中 languages.setLanguages(languageList); System.out.println(languageList); } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大毛族长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值