springboot之读取xml文件数据

<?xml version="1.0" encoding="UTF-8"?>
<c c1="0">
<d d1="101280101" d2="广州" d3="guangzhou" d4="广东"/>
<d d1="101280102" d2="番禺" d3="panyu" d4="广东"/>
<d d1="101280103" d2="从化" d3="conghua" d4="广东"/>
...
</c>

编写xml文件的映射实体类

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name="d")//city映射xml文件中的d节点
@XmlAccessorType(XmlAccessType.FIELD)//访问每一个属性
public class City {
	
	/**
	 * java类与xml文件的映射不用名字相同
	 */
	@XmlAttribute(name="d1")
	private String cityId;
	@XmlAttribute(name="d2")
	private String cityName;
	@XmlAttribute(name="d3")
	private String cityCode;
	@XmlAttribute(name="d4")
	private String province;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name="c")//city映射xml文件中的c节点
@XmlAccessorType(XmlAccessType.FIELD)//访问每一个子节点
public class CityList {
	
	@XmlElement(name="d")
	private List<City> cityList;

工具类:使用JAXB的API把xml文件中的数据读取出来,然后转换为Object

import java.io.Reader;
import java.io.StringReader;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;

/**
 * 工具类,把xml文件中的数据读取出来,然后转换为Object
 * @author czw
 *
 */
public class XmlBuilder {
	
	public static Object xmlStrToObject(Class<?> clazz,String xmlStr) throws Exception
	{
		Object obj=null;
		//1.读取xml文件
		Reader reader=null;
		//jaxb API
		//上下文
		JAXBContext context=JAXBContext.newInstance(clazz);
		//调用xml转换成对象的接口
		Unmarshaller un=context.createUnmarshaller();
		//实例化Reader
		reader=new StringReader(xmlStr);
		/*
		 * 核心代码:把xml字符串转换成java Object
		 * 2.把xml字符串转换为java Object:整个文件是一个字符串--》CityList
		 */
		obj=un.unmarshal(reader);
		if(null!=reader)
		{
			reader.close();
		}
		return obj;
	}

定义获取所有城市数据的service(获取xml文件c节点下所有的d节点)
1.读取xml文件
2.把xml文件内容读入缓冲区
3.调用xml转换Object工具类的方法获取所有城市数据

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.List;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Service;
import com.abc.weather.service.ifac.CityDataServiceIfac;
import com.abc.weather.util.XmlBuilder;
import com.abc.weather.vo.City;
import com.abc.weather.vo.CityList;

@Service
public class CityDataServiceImpl implements CityDataServiceIfac{
	@Override
	public List<City> listCity() throws Exception {
		// 1.读取xml文件
		Resource resource=new ClassPathResource("citylist.xml");
		BufferedReader br=new BufferedReader(new InputStreamReader(resource.getInputStream()));
		StringBuffer buffer=new StringBuffer();
		String line="";
		//2.把xml文件内容读入缓冲区
		while((line=br.readLine())!=null)
		{
			buffer.append(line);
		}
		br.close();
		//3.调用xml转换Object工具类的方法获取所有城市数据
		CityList cityList=(CityList) XmlBuilder.xmlStrToObject(CityList.class, buffer.toString());
		return cityList.getCityList();
	}
}
  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Boot中读取CSV文件并进行数据映射,可以使用OpenCSV库。以下是实现步骤: 1. 添加OpenCSV依赖 在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>com.opencsv</groupId> <artifactId>opencsv</artifactId> <version>5.0</version> </dependency> ``` 2. 创建CSV文件读取器 创建一个CSV文件读取器,使用OpenCSV库的CSVReader类。该类提供了多种方法用于读取CSV文件中的数据。 ``` @Service public class CsvReaderService { public List<Employee> readEmployeesFromCsv(String filePath) throws IOException { List<Employee> employees = new ArrayList<>(); FileReader fileReader = new FileReader(filePath); CSVReader csvReader = new CSVReaderBuilder(fileReader).withSkipLines(1).build(); String[] line; while ((line = csvReader.readNext()) != null) { Employee employee = new Employee(); employee.setId(Integer.parseInt(line[0])); employee.setName(line[1]); employee.setAge(Integer.parseInt(line[2])); employee.setSalary(Double.parseDouble(line[3])); employees.add(employee); } csvReader.close(); return employees; } } ``` 在上述代码中,我们首先创建了一个CSVReader对象,然后使用while循环逐行读取CSV文件中的数据,并将其映射到Employee对象中。在每次迭代中,我们将Employee对象添加到employees列表中,并在最后关闭CSVReader对象。 3. 创建实体类 创建一个Employee实体类,用于将CSV文件中的数据映射到对象中。 ``` public class Employee { private int id; private String name; private int age; private double salary; // getters and setters } ``` 4. 使用CsvReaderService类读取CSV文件 在需要读取CSV文件的地方,注入CsvReaderService类并调用readEmployeesFromCsv方法。 ``` @Autowired private CsvReaderService csvReaderService; public void processCsvFile() throws IOException { List<Employee> employees = csvReaderService.readEmployeesFromCsv("employees.csv"); // Do something with employees } ``` 以上就是Spring Boot项目读取CSV文件并进行数据映射的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值