java解析文件,java解析文件時出錯

本文目錄一覽:

在java在如何解析XML文件

在java環境下讀取xml文件的方法主要有4種:DOM、SAX、JDOM、JAXB

1. DOM(Document Object Model)

此方法主要由W3C提供,它將xml文件全部讀入內存中,然後將各個元素組成一棵數據樹,以便快速的訪問各個節點 。 因此非常消耗系統性能 ,對比較大的文檔不適宜採用DOM方法來解析。 DOM API 直接沿襲了 XML 規範。每個結點都可以擴展的基於 Node 的介面,就多態性的觀點來講,它是優秀的,但是在 Java 語言中的應用不方便,並且可讀性不強。

實例:

import javax.xml.parsers.*;

//XML解析器介面

import org.w3c.dom.*;

//XML的DOM實現

import org.apache.crimson.tree.XmlDocument;

//寫XML文件要用到

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

//允許名字空間

factory.setNamespaceAware(true);

//允許驗證

factory.setValidating(true);

//獲得DocumentBuilder的一個實例

try {

DocumentBuilder builder = factory.newDocumentBuilder();

} catch (ParserConfigurationException pce) {

System.err.println(pce);

// 出異常時輸出異常信息,然後退出,下同

System.exit(1);

}

//解析文檔,並獲得一個Document實例。

try {

Document doc = builder.parse(fileURI);

} catch (DOMException dom) {

System.err.println(dom.getMessage());

System.exit(1);

} catch (IOException ioe) {

System.err.println(ioe);

System.exit(1);

}

//獲得根節點StuInfo

Element elmtStuInfo = doc.getDocumentElement();

//得到所有student節點

NodeList nlStudent = elmtStuInfo.getElementsByTagNameNS(

strNamespace, “student”);

for (……){

//當前student節點元素

Element elmtStudent = (Element)nlStudent.item(i);

NodeList nlCurrent = elmtStudent.getElementsByTagNameNS(

strNamespace, “name”);

}

java解析json格式文件,再保存在資料庫怎麼做?

java解析json格式文件,再保存在資料庫的方法:

1:定義一個實體類

2:用json lib將json字元串轉為Java對象

3:用jdbc或hibernate將java對象存入資料庫

直接讀寫文件,再把讀出來的文件內容格式化成json,再用JDBC、Mybatis或者其他框架將json數據存入資料庫。

假設實體類是這樣的:

public class ElectSet {

public String xueqi;

public String xuenian;

public String startTime;

public String endTime;

public int menshu;

public String isReadDB;

//{“xueqi”:,”xuenian”:,”startTime”:,”endTime”:,”renshu”:,”isReadDB”:}

public String getXueqi() {

   return xueqi;

}

public void setXueqi(String xueqi) {

   this.xueqi = xueqi;

}

public String getXuenian() {

   return xuenian;

}

public void setXuenian(String xuenian) {

   this.xuenian = xuenian;

}

public String getStartTime() {

   return startTime;

}

public void setStartTime(String startTime) {

   this.startTime = startTime;

}

public String getEndTime() {

   return endTime;

}

public void setEndTime(String endTime) {

   this.endTime = endTime;

}

public int getMenshu() {

   return menshu;

}

public void setMenshu(int menshu) {

   this.menshu = menshu;

}

public String getIsReadDB() {

   return isReadDB;

}

public void setIsReadDB(String isReadDB) {

   this.isReadDB = isReadDB;

}

 

}

有一個json格式的文件,存的信息如下:

Sets.json:

{“xuenian”:”2007-2008″,”xueqi”:”1″,”startTime”:”2009-07-19 08:30″,”endTime”:”2009-07-22 18:00″,”menshu”:”10″,”isReadDB”:”Y”}

具體操作:

/*

* 取出文件內容,填充對象

*/

public ElectSet findElectSet(String path){

   ElectSet electset=new ElectSet();

   String sets=ReadFile(path);//獲得json文件的內容

   JSONObject jo=JSONObject.fromObject(sets);//格式化成json對象

   //System.out.println(“————” jo);

   //String name = jo.getString(“xuenian”);

   //System.out.println(name);

   electset.setXueqi(jo.getString(“xueqi”));

   electset.setXuenian(jo.getString(“xuenian”));

   electset.setStartTime(jo.getString(“startTime”));

   electset.setEndTime(jo.getString(“endTime”));

   electset.setMenshu(jo.getInt(“menshu”));

   electset.setIsReadDB(jo.getString(“isReadDB”));

   return electset;

}

//設置屬性,並保存

public boolean setElect(String path,String sets){

   try {

    writeFile(path,sets);

    return true;

   } catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    return false;

   }

}

//讀文件,返回字元串

public String ReadFile(String path){

    File file = new File(path);

    BufferedReader reader = null;

    String laststr = “”;

    try {

     //System.out.println(“以行為單位讀取文件內容,一次讀一整行:”);

     reader = new BufferedReader(new FileReader(file));

     String tempString = null;

     int line = 1;

     //一次讀入一行,直到讀入null為文件結束

     while ((tempString = reader.readLine()) != null) {

      //顯示行號

      System.out.println(“line ” line “: ” tempString);

      laststr = laststr tempString;

      line ;

     }

     reader.close();

    } catch (IOException e) {

     e.printStackTrace();

    } finally {

     if (reader != null) {

      try {

       reader.close();

      } catch (IOException e1) {

      }

     }

    }

    return laststr;

}

將獲取到的字元串,入庫即可。

如何用java解析CSV文件

思想:先獲取csv文件的路徑,通過BufferedReader類去讀該路徑中的文件,使用readLine方法進行逐行讀取。

注意:使用readLine方法後會自動轉到下一行。因此在判斷是否為空後得先將讀取到的內容賦值給一變數,在循環中使用該變數即可。

public static void main(String[] args)

{

    File csv = new File(“C:\\Users\\chenxumin\\Desktop\\Result.csv”);  // CSV文件路徑

    BufferedReader br = null;

    try

    {

        br = new BufferedReader(new FileReader(csv));

    } catch (FileNotFoundException e)

    {

        e.printStackTrace();

    }

    String line = “”;

    String everyLine = “”;

    try {

            ListString allString = new ArrayList();

            while ((line = br.readLine()) != null)  //讀取到的內容給line變數

            {

                everyLine = line;

                System.out.println(everyLine);

                allString.add(everyLine);

            }

            System.out.println(“csv表格中所有行數:”+allString.size());

    } catch (IOException e)

    {

        e.printStackTrace();

    }

}

java 怎樣解析 excel生成的xml文件

java解析excel生成的xml文件的方法是使用dom4j實現的。

dom4j是一個簡單的開源庫,用於處理XML、 XPath和XSLT,它基於Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP。

1、excel生成的xml樣例文件:

?xml version=”1.0″?

?mso-application progid=”Excel.Sheet”?

Workbook xmlns=”urn:schemas-microsoft-com:office:spreadsheet”

xmlns:o=”urn:schemas-microsoft-com:office:office”

xmlns:x=”urn:schemas-microsoft-com:office:excel”

xmlns:ss=”urn:schemas-microsoft-com:office:spreadsheet”

xmlns:html=””

DocumentProperties xmlns=”urn:schemas-microsoft-com:office:office”

Created2006-09-16T00:00:00Z/Created

LastSaved2016-07-25T03:26:50Z/LastSaved

Version14.00/Version

/DocumentProperties

OfficeDocumentSettings xmlns=”urn:schemas-microsoft-com:office:office”

AllowPNG/

RemovePersonalInformation/

/OfficeDocumentSettings

ExcelWorkbook xmlns=”urn:schemas-microsoft-com:office:excel”

WindowHeight7956/WindowHeight

WindowWidth14808/WindowWidth

WindowTopX240/WindowTopX

WindowTopY168/WindowTopY

ActiveSheet2/ActiveSheet

ProtectStructureFalse/ProtectStructure

ProtectWindowsFalse/ProtectWindows

/ExcelWorkbook

Styles

Style ss:ID=”Default” ss:Name=”Normal”

Alignment ss:Vertical=”Bottom”/

Borders/

Font ss:FontName=”宋體” x:CharSet=”134″ ss:Size=”11″ ss:Color=”#000000″/

Interior/

NumberFormat/

Protection/

/Style

Style ss:ID=”s16″ ss:Name=”好”

Font ss:FontName=”宋體” x:CharSet=”134″ ss:Size=”11″ ss:Color=”#006100″/

Interior ss:Color=”#C6EFCE” ss:Pattern=”Solid”/

/Style

Style ss:ID=”s17″

Alignment ss:Horizontal=”Left” ss:Vertical=”Center” ss:Indent=”1″

ss:WrapText=”1″/

Font ss:FontName=”宋體” x:CharSet=”134″ ss:Size=”8″ ss:Color=”#686868″/

NumberFormat ss:Format=”@”/

/Style

Style ss:ID=”s18″ ss:Parent=”s16″

Alignment ss:Vertical=”Bottom”/

/Style

Style ss:ID=”s19″

NumberFormat ss:Format=”yyyy/m/d\ h:mm:ss”/

/Style

/Styles

Worksheet ss:Name=”Sheet1″

Table ss:ExpandedColumnCount=”6″ ss:ExpandedRowCount=”3″ x:FullColumns=”1″

x:FullRows=”1″ ss:DefaultRowHeight=”14.4″

Row

CellData ss:Type=”String”工號/Data/Cell

CellData ss:Type=”String”姓名 /Data/Cell

Cell ss:Index=”5″Data ss:Type=”String”工號/Data/Cell

CellData ss:Type=”String”姓名/Data/Cell

/Row

Row

CellData ss:Type=”Number”111/Data/Cell

CellData ss:Type=”String”張三/Data/Cell

Cell ss:Index=”5″Data ss:Type=”Number”111/Data/Cell

Cell ss:Formula=”=VLOOKUP(R2C5:R3C5,RC[-5]:R[1]C[-4],2)”Data

ss:Type=”String”張三/Data/Cell

/Row

Row

CellData ss:Type=”Number”112/Data/Cell

CellData ss:Type=”String”李四/Data/Cell

Cell ss:Index=”5″Data ss:Type=”Number”112/Data/Cell

Cell ss:Formula=”=VLOOKUP(R2C5:R3C5,RC[-5]:R[1]C[-4],2)”Data

ss:Type=”String”李四/Data/Cell

/Row

/Table

WorksheetOptions xmlns=”urn:schemas-microsoft-com:office:excel”

PageSetup

Header x:Margin=”0.3″/

Footer x:Margin=”0.3″/

PageMargins x:Bottom=”0.75″ x:Left=”0.7″ x:Right=”0.7″ x:Top=”0.75″/

/PageSetup

Panes

Pane

Number3/Number

ActiveRow7/ActiveRow

ActiveCol5/ActiveCol

/Pane

/Panes

ProtectObjectsFalse/ProtectObjects

ProtectScenariosFalse/ProtectScenarios

/WorksheetOptions

/Worksheet

/Workbook

2、java解析代碼:

import java.io.File;

import java.util.Iterator;

import org.dom4j.Attribute;

import org.dom4j.Document;

import org.dom4j.Element;

import org.dom4j.io.SAXReader;

public class Demo {

public static void main(String[] args) throws Exception {

SAXReader reader = new SAXReader();

Document document = reader.read(new File(“person.xml”));

Element root = document.getRootElement();

Iterator it = root.elementIterator();

while (it.hasNext()) {

Element element = (Element) it.next();

//未知屬性名稱情況下

/*Iterator attrIt = element.attributeIterator();

while (attrIt.hasNext()) {

Attribute a = (Attribute) attrIt.next();

System.out.println(a.getValue());

}*/

//已知屬性名稱情況下

System.out.println(“id: ” + element.attributeValue(“id”));

//未知元素名情況下

/*Iterator eleIt = element.elementIterator();

while (eleIt.hasNext()) {

Element e = (Element) eleIt.next();

System.out.println(e.getName() + “: ” + e.getText());

}

System.out.println();*/

//已知元素名情況下

System.out.println(“title: ” + element.elementText(“title”));

System.out.println(“author: ” + element.elementText(“author”));

System.out.println();

}

}

}

Java裡面怎麼解析xml文件的內容

Java解析xml代碼,我是用dom4j讀取的,

import java.io.File;

import java.util.Iterator;

import org.dom4j.Attribute;

import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.Element;

import org.dom4j.io.SAXReader;

public class Dom4JReader {

public Dom4JReader() {

}

/**

*

* @Function 獲取xml文件里符合要求的數據

*/

public void getDom() {

SAXReader sr = new SAXReader();

try {

//獲取applicationContext.xml文件的對象

Document doc = sr.read(new File(“applicationContext.xml”));

//獲得跟節點

Element root = doc.getRootElement();

//// 枚舉所有子節點

for (Iterator i = root.elementIterator(“bean”); i.hasNext();) {

//獲取bean節點

Element bean = (Element) i.next();

// 枚舉名稱為bean的節點

for (Iterator j = bean.attributeIterator(); j.hasNext();) {

//獲取bean節點的所有屬性

Attribute attr = (Attribute) j.next();

//判斷屬性的值如果為fileUploadBo

if (attr.getText().equals(“fileUploadBo”)) {

//列印出這個bean節點的所有信息

System.out.println(bean.asXML());

}

}

}

} catch (DocumentException e) {

e.printStackTrace();

}

}

}

這段代碼要執行的話,要導入dom4j的包,還有

//獲取applicationContext.xml文件的對象

Document doc = sr.read(new File(“applicationContext.xml”));

在src下有這個xml文件。

原創文章,作者:TAIF,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/133804.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
TAIF的頭像TAIF
上一篇 2024-10-04 00:01
下一篇 2024-10-04 00:01

相關推薦

發表回復

登錄後才能評論