前言
有時候需要通過編程來讀取一些xls文件的內(nèi)容唇牧,或者xml文件风范,讀取這兩種類型的文件,沒什么關(guān)聯(lián)摹恰,只是碰巧需要同時讀取兩種類型的文件辫继。
準(zhǔn)備
讀取xls文件,可以使用Apache的一個開源項目.POI俗慈,有興趣的自己看一下官方介紹.
使用Maven集成
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.14</version>
</dependency>
讀取xml文件姑宽,使用系統(tǒng)自帶的庫即可。
代碼
讀取淘寶聯(lián)盟每日10點上新的xls文件
FileInputStream inputStream = new FileInputStream("/Users/aihe/Desktop/精選優(yōu)質(zhì)商品清單(內(nèi)含優(yōu)惠券)-2017-03-09.xls");
POIFSFileSystem poifsFileSystem = new POIFSFileSystem(inputStream);
Workbook workbook = new HSSFWorkbook(poifsFileSystem);
HSSFSheet sheet = (HSSFSheet) workbook.getSheetAt(0);
int rows = sheet.getPhysicalNumberOfRows();
for (int i = 1; i < rows; i++) {
HSSFRow row = sheet.getRow(i);
for (int j = 0; j < row.getPhysicalNumberOfCells(); j++) {
// TODO 對cell進(jìn)行操作
HSSFCell cell = row.getCell(j);
}
}
讀取XML內(nèi)容,XML內(nèi)容, 文件名為cat.xml
<?xml version="1.0" encoding="utf-8" ?>
<row>
<field name="catid">1</field>
<field name="catname">時尚女裝</field>
<field name="catid">2</field>
<field name="catname">男裝</field>
<field name="catid">3</field>
<field name="catname">母嬰</field>
<field name="catid">5</field>
<field name="catname">食品</field>
<field name="catid">6</field>
<field name="catname">美妝</field>
<field name="catid">7</field>
<field name="catname">箱包</field>
...
</row>
File file = new File("cat.xml");
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = documentBuilderFactory.newDocumentBuilder();
Document document = builder.parse(file);
document.getDocumentElement().normalize();
NodeList nodeList = document.getElementsByTagName("field");
LinkedList<String> catids = new LinkedList<>();
LinkedList<String> catNames = new LinkedList<>();
for (int i = 0; i < nodeList.getLength(); i++) {
if (nodeList.item(i).getNodeType() == Node.ELEMENT_NODE){
Element element = (Element) nodeList.item(i);
if (element.getAttribute("name").equals("catid")){
catIds.add(element.getTextContent());
}else if (element.getAttribute("name").equals("catname")){
catNames.add(element.getTextContent())
}
}
}
System.out.println(catIds);
System.out.println(catNames);
結(jié)果:
[1, 2, 3, 5, 6, 7, 9, 11, 13, 14, 15, 16, 17]
[時尚女裝, 男裝, 母嬰, 食品, 美妝, 箱包, 珠寶配飾, 文體用品, 居家百貨, 家裝家紡, 數(shù)碼家電, 戶外運(yùn)動, 茶葉 ]
總結(jié)
程序比較簡單闺阱,只是一些簡單的小例子, 做一些記錄低千。