Java中讀取XML檔案,生成XML格式的字串並解析這個字串
由於最近要用的是XML格式的字串,而不用寫到檔案中,所以對原始程式碼進行了修改如下:
要讀的xml檔案
<?xml version="1.0" encoding="GB2312"?> <學生花名冊> <學生 性別 = "男"> <姓名>李華</姓名> <年齡>14</年齡> </學生> <學生 性別 = "男"> <姓名>張三</姓名> <年齡>16</年齡> </學生> </學生花名冊>
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.io.OutputStreamWriter; import java.util.Iterator; import java.util.Vector; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.OutputKeys; import javax.xml.transform.Result; import javax.xml.transform.Source; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.w3c.dom.Text; public class DomTest { Vector students_Vector; private Vector readXMLFile(String file) throws Exception { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = dbf.newDocumentBuilder(); Document doc = builder.parse(file); // 獲取到xml檔案 // 下面開始讀取 Element root = doc.getDocumentElement(); // 獲取根元素 NodeList students = root.getElementsByTagName("學生"); students_Vector = new Vector(); for (int i = 0; i < students.getLength(); i++) { // 一次取得每一個學生元素 Element ss = (Element) students.item(i); // 建立一個學生的例項 student stu = new student(); stu.setSex(ss.getAttribute("性別")); NodeList names = ss.getElementsByTagName("姓名"); Element e = (Element) names.item(0); Node t = e.getFirstChild(); stu.setName(t.getNodeValue()); NodeList ages = ss.getElementsByTagName("年齡"); e = (Element) ages.item(0); t = e.getFirstChild(); stu.setAge(Integer.parseInt(t.getNodeValue())); students_Vector.add(stu); } return students_Vector; } /** * 功能:直接提取XML格式字串中的資訊 */ private Vector readXMLString(String xmlStr) throws Exception { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = dbf.newDocumentBuilder(); InputStream inputStream = new ByteArrayInputStream(xmlStr.getBytes()); Document doc = builder.parse(inputStream); // // 下面開始讀取 Element root = doc.getDocumentElement(); // 獲取根元素 NodeList students = root.getElementsByTagName("學生"); students_Vector = new Vector(); for (int i = 0; i < students.getLength(); i++) { // 一次取得每一個學生元素 Element ss = (Element) students.item(i); // 建立一個學生的例項 student stu = new student(); stu.setSex(ss.getAttribute("性別")); NodeList names = ss.getElementsByTagName("姓名"); Element e = (Element) names.item(0); Node t = e.getFirstChild(); stu.setName(t.getNodeValue()); NodeList ages = ss.getElementsByTagName("年齡"); e = (Element) ages.item(0); t = e.getFirstChild(); stu.setAge(Integer.parseInt(t.getNodeValue())); students_Vector.add(stu); } return students_Vector; } // 將Document內容 寫入XML字串並返回 private String callWriteXmlString(Document doc, String encoding) { try { Source source = new DOMSource(doc); ByteArrayOutputStream outStream = new ByteArrayOutputStream(); OutputStreamWriter write = new OutputStreamWriter(outStream); Result result = new StreamResult(write); Transformer xformer = TransformerFactory.newInstance() .newTransformer(); xformer.setOutputProperty(OutputKeys.ENCODING, encoding); xformer.transform(source, result); return outStream.toString(); } catch (TransformerConfigurationException e) { e.printStackTrace(); return null; } catch (TransformerException e) { e.printStackTrace(); return null; } } /** * 功能:生成XML格式的字串 */ public String writeXMLString() { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = null; try { builder = dbf.newDocumentBuilder(); } catch (Exception e) { } Document doc = builder.newDocument(); Element root = doc.createElement("學生花名冊"); doc.appendChild(root); // 將根元素新增到文件上 // 獲取學生資訊 for (int i = 0; i < students_Vector.size(); i++) { student s = (student) students_Vector.get(i); // 建立一個學生 Element stu = doc.createElement("學生"); stu.setAttribute("性別", s.getSex()); root.appendChild(stu);// 新增屬性 // 建立文字姓名節點 Element name = doc.createElement("姓名"); stu.appendChild(name); Text tname = doc.createTextNode(s.getName()); name.appendChild(tname); // 建立文字年齡節點 Element age = doc.createElement("年齡"); stu.appendChild(age); // 將age新增到學生節點上 Text tage = doc.createTextNode(String.valueOf(s.getAge())); age.appendChild(tage); // 將文字節點放在age節點上 } try { String result = callWriteXmlString(doc, "gb2312"); return result; } catch (Exception e) { e.printStackTrace(); return null; } } /** * 主函式 */ public static void main(String args[]) { String str = "xml\\student.xml"; DomTest t = new DomTest(); System.out.println("解析原始XML檔案:"); try { Vector v = t.readXMLFile(str); Iterator it = v.iterator(); while (it.hasNext()) { student s = (student) it.next(); System.out.println(s.getName() + "\t" + s.getAge() + "\t" + s.getSex()); } } catch (Exception e) { e.printStackTrace(); } String xmlStr = t.writeXMLString(); System.out.println("\n生成的XML字串:\n" + xmlStr); try { Vector v = t.readXMLString(xmlStr); Iterator it = v.iterator(); System.out.println("\n解析生成的XML字串:"); while (it.hasNext()) { student s = (student) it.next(); System.out.println(s.getName() + "\t" + s.getAge() + "\t" + s.getSex()); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } class student { private String sex; private String name; private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void setSex(String s) { sex = s; } public String getSex() { return sex; } public void setName(String n) { name = n; } public String getName() { return name; } }
輸出:
解析原始XML檔案: 李華 14 男 張三 16 男 生成的XML字串: <?xml version="1.0" encoding="GB2312" standalone="no"?><學生花名冊><學生 性別="男"><姓名>李華</姓名><年齡>14</年齡></學生><學生 性別="男"><姓名>張三</姓名><年齡>16</年齡></學生></學生花名冊> 解析生成的XML字串: 李華 14 男 張三 16 男
相關推薦
Java中讀取XML檔案,生成XML格式的字串並解析這個字串
由於最近要用的是XML格式的字串,而不用寫到檔案中,所以對原始程式碼進行了修改如下: 要讀的xml檔案 <?xml version="1.0" encoding="GB2312"?> <學生花名冊> <學生 性別 = "男">
Java中讀取配置檔案(properties、xml)
1. 利用java.util提供的工具類Properties - 首先我這邊有個file.properties檔案 - 然後去讀取這個檔案
使用java實現讀取txt檔案,匯入到MongoDB中
1.txt檔案如下 2.建立main主類 public static void main(String[] args) { MongoClient mongo = new MongoClient("localhost"
如何讀取xml檔案,根據xml節點屬性查詢並輸出xml檔案
主要是應用SimpleXML和遞迴函式來根據key值來查詢,並將結果以xml格式輸出。 <?php header("Content-type: text/xml"); //以xml格式輸出檔案 @$key=$_GET['key']; $find=false; //echo $key."<
Java如何解析某個目錄下xml檔案,將XML檔案轉換為報表資料來源?
在Java開發的報表工具FineReport中,假如在目錄下儲存了幾個XML檔案,希望把XML檔案轉換為報表資料來源,同時希望展示動態xml資料來源的效果,這時可通過引數的方式,動態獲取xml欄位中的值再作為報表資料來源。Northwind.xml記錄資料格式如下:<?
Java讀取Excel檔案,生成SQL語句
import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; import java.io.*; public class Main { public static void
C#基礎精華06(Linq To XML,讀取xml檔案,寫入xml)
Linq To XML xml 標記語言 html xml 側重於儲存資料 html顯示資料 註釋<!-- 註釋 --> xml沒有預定義標籤 html有 核心類XElement,一個XElement表示一個元素,new XElement(“Order”
libxml2庫 讀取xml檔案,寫xml檔案
所用xml檔案內容: <?xml version="1.0" encoding="utf-8"?> <style name="file"> <contents name="type"> <content>.mp3&
Java專案中讀取properties檔案,以及六種獲取路徑的方法
Java讀取properties檔案的方法比較多,網上最多的文章是"Java讀取properties檔案的六種方法",但在Java應用中,最常用還是通過java.lang.Class類的getResourceAsStream(String name) 方法來實現,但我見到眾多讀取properties檔案的
Java中讀取配置檔案中的內容,並將其賦值給靜態變數的方法
應用場景 專案開發中某個功能需要抽取成方法寫成一個工具類,提供給別人使用。寫過工具類的人都知道,工具類中的方法一般都是靜態方法,可以直接使用類名點方法名呼叫, 使用很方便,比如判斷某個物件是否為空的方式Objects.equals().由於我寫的這個工具類中需要讀取配置檔案中的內容,但是常規方法注入成員變數時
java中讀取Property檔案屬性工具類
java中讀取Property配置檔案屬性工具類: import java.util.Locale; import java.util.MissingResourceException; import java.util.ResourceBundle; /** * 讀取Property配置檔
java selenium 讀取配置檔案,報錯中文亂碼
參考引自:https://blog.csdn.net/qq_27093465/article/details/70765870 根據自己問題解決: package com.property; import java.io.BufferedInputStream; import java.i
讀取txt檔案,生成csv檔案
最近做了個小程式,要求在同文件夾下的txt檔案,處理內容之後,生成csv檔案。 1 import java.io.*; 2 import java.util.ArrayList; 3 import java.util.List; 4 5 public class Simplify
java中讀取配置檔案的一些方法 getResourceAsStream 和 直接 FileInputStream 以及 配置System.getProperty("user.dir")所得的工作目錄
配置檔案位於 /src/ 下的情況已經由上述博主列出,需要的可以移步檢視,即以下幾個情況 1.路徑:src/aa.xml 2.位於src下同一個包下 3.位於src下不同包 不過本博主的專案是web專案,而配置檔案放在src檔案下容易因為快取導致更新不及時,
java中的註釋規範,生成javadoc
java中的註釋,大家應該已經很熟悉了。 文件註釋可以用於對類、屬性、方法等進行說明。寫文件註釋時除了需要使用 /** .... */ 限定之外,還需要注意註釋內部的一些細節問題。 1文件和文件註釋的格式化 生成的文件是 HTML 格式,而這些 HTML 格式
python中讀取txt檔案,windows下麼有毛病,到Linux下總是隻有最後一行有效,怎麼解決?
比如:這個txt有5行, fin = open('F:\\temp\\name.txt','r') for line in fin: strsname = line.rstrip('\n') AAA('F:\\temp','F:\\temp\\2',str
五種方式讓你在java中讀取properties檔案內容不再是難題
一、背景 最近,在專案開發的過程中,遇到需要在properties檔案中定義一些自定義的變數,以供java程式動態的讀取,修改變數,不再需要修改程式碼的問題。就藉此機會把Spring+SpringMVC+Mybatis整合開發的專案中通過java程式讀取properties檔案內容的方式進行了梳理和分析
Java中讀取配置檔案的方式
一、使用org.apache.commons.configuration 需要使用的jar包:commons-collections-3.2.1.jar、commons-configuratio
java中讀取配置檔案的方法
一、使用org.apache.commons.configuration 需要使用的是jar包:commons-collections-3.2.1.jar、commons-configuration-1.10.jar、commons-lang-2.6.jar和commons
java中讀取properties檔案內容
package com.tgb.SpringActivemq.utils; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; impo