JAVA读取XML文件中的特定内容(汉字)转换成拼音并用IO流输出到本地的一个新文件

本文介绍了如何使用Java从XML文件中读取特定汉字内容,将其转换为拼音,并通过IO流将结果写入新的XML文件。文章提供了所需的jar包链接,并展示了输入文件data1.xml与输出文件printdata.xml的内容结构。
摘要由CSDN通过智能技术生成

先贴结果:把data.xml中的红线标注提取并输出到printdata.xml中
data.xml:
在这里插入图片描述
左边为拼音,右边为原文本,如果有重复的,就左边右边输出相同的
printdata.xml:
在这里插入图片描述

不多说了直接进入整题

1、这里主要引入两个 jar 包 一个是 拼音转汉字的jar包,一个是java读取xml文件的jar包 。下文中会放这两个包的链接。
在这里插入图片描述

2、贴代码,这个代码写的有点冗余,不过功能还是能实现的。后续在改改吧。

//输出结果
    @Test
    public  void readXml() throws Exception {
   
        SAXBuilder saxBuilder = new SAXBuilder();
        List<String> finalList = new ArrayList<>();
        List<String> finalList2 = new ArrayList<>();
        //构造文档对象
        File file = new File("x:\\xxx\\xxx\\printdata.xml" );
		//Document document = (Document) saxBuilder.build("C:\\IDEAprojects\\ccic\\data.xml");//亦可
        FileWriter  writerout = new FileWriter (file.getName(),false);
        BufferedWriter bufferWritter = new BufferedWriter(writerout);
        //意思是获得当前对象所属的class对象的类装载器,其中的getResourceAsStream的参数是默认则是从ClassPath根下获取,
        //path不能以’/'开头,最终是由ClassLoader获取资源。
        Document document = (Document) saxBuilder.build(test.class.getClassLoader().getResourceAsStream("data1.xml"));
        //获取根元素
        Element root = document.getRootElement();
        System.out.println(root.getName());
        //获取名字为view的所有元素

        List list = root.getChildren("view");
        System.out.println(list); //[[Element: <view/>]]
        for(int i = 0; i < list.size(); i++) {
   
            Element element = (Element) list.get(i);
            List<Element> form = element.getChildren("form");
            System.out.println(form); //[[Element: <form/>]]
            for (int j = 0; j < form.size(); j++) {
   
                Element element1 = form.get(j);
                List<Element> dataGrid = element1.getChildren("DataGrid");
                System.out.println(dataGrid);//[[Element: <DataGrid/>]]
                for (int k = 0; k < dataGrid.size(); k++) {
   
                    Element element2 = dataGrid.get(k);
                    List<Element> DataRowlist = element2.getChildren("DataRow");
                    System.out.println(DataRowlist);//[[Element: <DataRow/>]]
                    for (int m = 0; m < DataRowlist.size(); m++) {
   
                        Element element3 = DataRowlist.get(m);
                        String dataCell = element3.getName();
                        System.out.println(dataCell);//DataRow
                        List<Element> DataCelllist = element3.getChildren("DataCell");
                        System.out.println(DataCelllist);//[[Element: <DataCell/>], [Element: <DataCell/>], [Element: <DataCell/>], [Element: <DataCell/>], [Element: <DataCell/>], [Element: <DataCell/>], [Element: <DataCell/>]]
                        for (int n = 0;<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值