導航:首頁 > 編程語言 > java讀取配置文件xml

java讀取配置文件xml

發布時間:2022-07-23 18:57:49

『壹』 java中如何讀取xml文件

做一個模擬就行了 我這個是模擬的Spring

importjava.util.*;
importorg.jdom.*;
importorg.jdom.input.SAXBuilder;
publicclassSample1{
publicstaticvoidmain(String[]args)throwsException{
SAXBuildersb=newSAXBuilder();

Documentdoc=sb.build(Sample1.class.getClassLoader().getResourceAsStream("beans.xml"));//構造文檔對象
Elementroot=doc.getRootElement();//獲取根元素HD
Listlist=root.getChildren("bean");//取名字為disk的所有元素
for(inti=0;i<list.size();i++){
Elementelement=(Element)list.get(i);
Stringid=element.getAttributeValue("id");
Stringclazz=element.getAttributeValue("class");
System.out.println(id);
System.out.println(clazz);

}
}
}

『貳』 java讀取XML文件路徑問題

相對路徑的話,可以先獲取到當前文件的編譯路徑,之後在找到想找文件的路徑的思路來實現。
舉例:
XMLS.class.getClass().getResourceAsStream("/test/test.xml");
解釋:XMLS.class.getClass()是獲取當前的類編譯路徑,之後通過getResourceAsStream的形式即可找到要讀取的文件的路徑。
備註:這個方法中後面的路徑也可以通過截取的形式來進行路徑獲取,實現原理都是找到當前類路徑,之後通過相對位置找到另外文件路徑。

『叄』 Java如何讀取XML文件 具體實現

xml的解析
1.解析式為了得到裡面的內容,進行增,刪,改查的操作

XML的解析方式
SAX(Simple API for XML)xml文檔的一種簡單的解析方式
DOM(Document Object Model)
DOM4J
SAX:基於事件的解析方式
DOM: 基於對象的解析方式
事件監聽三要素
1.事件源
2.監聽器
3.事件
SAX 基於事件的解析
優點: 簡單 效率高
缺點:順序執行,不能得到某個元素 不能逆向執行
不能進行增,與刪的操作
SAX解析方式工作原理:
通過時間源xml文檔創建SAXParseFactory
SAXParserFactory factory=SAXParserFactory.newInstance();
得到一個解析器
SAXParser parse=factory.newSAXParser();
對xml文件進行解析
得到解析的文件對象
File file=new File("employees.xml");
通過監聽器進行解析
MyListener listener=new MyListener();
parse.parse(file,listener);
對於監聽器有5個方法:監聽器所在的類實現的介面有:
org.xml.sax.hepers.DefaultHandler
org.xml.sax
通過查看API文檔中的DefaultHandler類中的下面5個方法
startDocument() 對於文檔開始的解析
public void startDocument()throws SAXException{
System.out.println("文檔開始解析啦!!!!");
}
startElement()元素開始的解析其中幾個名詞
url:命名空間的url
localName:命名空間的前綴
qName:元素
attributes:元素里的屬性
public void startElement(String url,String localName,String qName,Attributes attributes)throws SAXException{
StringBuffer sb=new StringBuffer();
sb.append("<"+qName);
for(int i=0;i<attributes.getLength();i++){
String attName=attributes.getQName(i);獲得元素屬性名稱其中的i為元素的第幾個屬性
String attValue=attributes.getValue(i);獲得元素屬性的值其中的i為元素的第幾個屬性的值
sb.append(attName+"="+attValue);
}
sb.append(">");
System.out.print(sb.toString());
}
character()獲得元素的內容體
public void characters(char[]ch,int start,int length)throws SAXException{
System.out.print(new String(ch,start,length));
}
endElement()獲得元素的結束事件
public void endElement(String url,String localName,String qName)throws SAXException{
System.out.print("</"+qName+">");
}
endDocument()獲得文檔的結束事件
public void endDocument(){
System.out.println("文檔解析結束啦!!!!");
}
對於SAX解析只能逐行解析不能越行解析
DOM:基於對象的
優點:靈活,能進行增刪的操作
缺點:讀取速度慢,效率低 佔用的內容多
對於DOM解析:不需要添加監聽器,按級解析從根元素、一級子元素、二級子元素......
同SAX解析相同剛開始也是要得到一個解析器;
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance() ;
因為構造方法不可用不可以new對象只能用newInstance()方法得到解析器對象
DocumentBuilder builder=factory.newDocumentBuilder() ;得到一個解析器
對於document可以有兩種方法得到:
Document document= builder.parse(new File(文件路徑));通過parse方法解析一個已有的xml文檔
Document document=builder.newDocument();可以得到一個空的document對象
得到根節點
Element root=document.getDocumentElement();
如果不存在根節點即為一個空document對象的時候只能添加跟節點
Element root=document.createElement(根節點的名字)
得到根節點下面的所有一級子元素
NodeList list=root.getElementsByTagName(根節點的名字可以用root.getTagName或者root.getNodeName()得到根節點的名字)();
{
對與document可以添加一級子元素
不管document是否為空都可以添加
Element firstElements =root.creatElement(一級子元素的名字);
當然也可以為一級子元素添加屬性
一級子元素的名字.setAttribute("屬性名","屬性值");
}
通過遍歷list集合
for(int i=0;i<list.getLength();i++){
Element first_elements=(Element)list.item(i);
可以得到一級資源的屬性的值當知道屬性的時候
String attribute=first_elements.getAttribute("屬性的名字");
得到一級子元素的名字
String first_elements_name=first_elements.getNodeName();
得到一級子元素下面所有的元素如id 第一個id元素當然也可有很多個id
通過item()來確定要取那個id
Element id_element=(Element)first_elements.getElementByName("id").item(0);
得到id的值
String id_value=id_element.getFirstChild().getTextContent();
通過這個遍歷集合可以拿到所有子元素
}
DOM添加或刪除元素:
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance() ;
因為構造方法不可用不可以new對象只能用newInstance()方法得到解析器對象
DocumentBuilder builder=factory.newDocumentBuilder() ;得到一個解析器
對於document可以有兩種方法得到:
Document document= builder.parse(new File(文件路徑));通過parse方法解析一個已有的xml文檔
Document document=builder.newDocument();可以得到一個空的document對象
得到根節點
Element root=document.getDocumentElement();
如果不存在根節點即為一個空document對象的時候只能添加跟節點
Element root=document.createElement(根節點的名字)
對與document可以添加一級子元素
不管document是否為空都可以添加
Element firstElements =root.creatElement(一級子元素的名字);
當然也可以為一級子元素添加屬性
一級子元素的名字.setAttribute("屬性名","屬性值");
添加二級子元素
Element secondElements=firstElements.creatElement("二級子元素的名字");
掛載組裝
一級子元素firstElements.append(secondElements);
根節點root.appendChild(firstElements);
將document對象樹寫入磁碟
TransformerFactory tf=TransformerFactory.newInstance();
Transformer former=tf.newTransformer();
DOMSource source=new DOMSource(document);
StreamResult result= new StreamResult(new File("10.xml"));結果集
former.transform(source,result);
完畢
DOM4j需要藉助外部jar包
需要藉助外部jar包就必須設置環境變數中的classpath把classpath設置成
dom4j jar包存在的路徑(絕對路徑)
例如:
set classpath=.;C:\Documents and Settings\Administrator\桌面\day3\dom4j.jar
import org.dom4j.io.*;
import java.io.*;
import java.util.*;
import org.dom4j.*;
public static void read_XML(String fileName){
try{
//得到一個解析器,相當於SAX,DOM裡面的解析器工廠,與解析器
SAXReader reader=new SAXReader();
//得到一個對象樹
Document document=reader.read(new File(fileName));
//得到一個根元素
Element root=document.getRootElement();
System.out.println(root.getName());
//得到所有的一級子元素
List firstElements=root.elements();
Iterator it=firstElements.iterator();
while(it.hasNext()){
//依次得到每一個一級子元素
Element firstElement=(Element)it.next();
System.out.println(firstElement.getName());
//得到所有的屬性
List attributes=firstElement.attributes();
for(Object obj:attributes){
//依次得到每一個屬性
Attribute att=(Attribute)obj;
System.out.println(att.getName()+"="+att.getValue());
}
//得到一級子元素下面的所有元素,及其附帶值
List second_Elements=firstElement.elements();
Iterator second_Element=second_Elements.iterator();
while(second_Element.hasNext()){
Element sec_Element=(Element)second_Element.next();
System.out.println(sec_Element.getName()+":"+sec_Element.getText());

}
System.out.println("----------");
}
}catch(Exception e){

}
}
public static void write(String fileName){
try{
Document document = DocumentHelper.createDocument();
//創造一級子元素
Element books=document.addElement("books");
books.addComment("The book is J2EE");
Element book=books.addElement("book");
創建元素的屬性
book.addAttribute("show","yes");
book.addAttribute("page","100");
創建二級子元素
Element book_name=book.addElement("bookName");
創建元素的內容體
book_name.setText("xml");
Element book_price=book.addElement("bookPrice");
book_price.setText("3000");
Element book_press=book.addElement("bookPress");
book_press.setText("etoak");
Element book_author=book.addElement("bookAuthor");
book_author.setText("Robin");
//掛載另一個一級子元素
book=books.addElement("book");
book.addAttribute("show","NO");
book.addAttribute("page","200");
book_name=book.addElement("bookName");
book_name.setText("葵花寶典");
book_price=book.addElement("bookPrice");
book_price.setText("無價之寶");
book_press.addElement("bookPress");
book_press.setText("華山派");
book_author=book.addElement("bookAuthor");
book_author.setText("林平之");
//創建xml文件輸出的路徑
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("gbk");
XMLWriter xw=new XMLWriter(new FileOutputStream(fileName),
format);
//XMLWriter xx= new XMLWriter(System.out,OutputFormat.createPrettyPrint());
xw.write(document);
xw.flush();
xw.close();
}catch(Exception e){
對於DOM4j添加子元素,是一級一級的添加的而在DOM中是先創造
子元素然後再掛載的DOM4j在創建子元素的時候就確定好了順序
對於文件的輸出各有千秋各有特色其中SAX是需要添加監聽器的
}
}
public static void update(String fileName){
try{
SAXReader reader= new SAXReader();
Document document = reader.read(new File(fileName));
Element root = document.getRootElement();
System.out.println(root.getName());
在根節點上添加一級子元素
Element student=root.addElement("student");
Element id=student.addElement("id");
id.setText("007");
OutputStream os= new FileOutputStream(fileName);
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter xw = new XMLWriter(os,format);
xw.write(document);
xw.flush();
xw.close();
}catch(Exception e){
和創建一個新的document對象類似只不過這個的根節點已經存在
直接可以在根節點上添加一級子元素;
}
}

『肆』 java讀取xml文件有幾中方法各有什麼優劣

xml文件:Xml代碼<?xmlversion=1.0encoding=GB2312?<RESULT<VALUE<NOA1234</NO<ADDR河南省鄭州市</ADDR</VALUE<VALUE<NOB1234</NO<ADDR河南省鄭州市二七區</ADDR</VALUE第一種DOM實現方法:Java代碼importjava.io.File;importjavax.xml.parsers.DocumentBuilder;importjavax.xml.parsers.DocumentBuilderFactory;importorg.w3c.dom.Document;importorg.w3c.dom.NodeList;publicclassMyXMLReader2DOM{publicstaticvoidmain(Stringarge[]){longlasting=System.currentTimeMillis();try{Filef=newFile(data_10k.xml);DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();DocumentBuilderbuilder=factory.newDocumentBuilder();Documentdoc=builder.parse(f);NodeListnl=doc.getElementsByTagName(VALUE);for(inti=0;i<nl.getLength();i++){System.out.print(車牌號碼:+doc.getElementsByTagName(NO).item(i).getFirstChild().getNodeValue());System.out.println(車主地址:+doc.getElementsByTagName(ADDR).item(i).getFirstChild().getNodeValue());System.out.println(運行時間:+(System.currentTimeMillis()-lasting)+毫秒);}}}catch(Exceptione){e.printStackTrace();}}})DOM4J性能最好,連Sun的JAXM也在用DOM4J.目前許多開源項目中大量採用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J來讀取XML配置文件。如果不考慮可移植性,那就採用DOM4J.2)JDOM和DOM在性能測試時表現不佳,在測試10M文檔時內存溢出。在小文檔情況下還值得考慮使用DOM和JDOM.雖然JDOM的開發者已經說明他們期望在正式發行版前專注性能問題,但是從性能觀點來看,它確實沒有值得推薦之處。另外,DOM仍是一個非常好的選擇。DOM實現廣泛應用於多種編程語言。它還是許多其它與XML相關的標準的基礎,因為它正式獲得W3C推薦(與基於非標準的Java模型相對),所以在某些類型的項目中可能也需要它(如在JavaScript中使用DOM)。3)SAX表現較好,這要依賴於它特定的解析方式-事件驅動。

『伍』 java讀取配置文件的方法(xml)

用的是jdom包

URL url = RederXml.class.getClassLoader().getResource("");
String path = url.toString() + "/config.xml";\\工程種xml的路徑
HashMap<String, String> map = new HashMap<String, String>();
SAXBuilder sax = new SAXBuilder();
Document doc = null;
try {
doc = sax.build(path);
} catch (JDOMException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Element root = doc.getRootElement();

『陸』 JAVA中怎麼讀取XML文件

參考:
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import java.io.File;

public class ReadXMLFile {

public static void main(String argv[]) {

try {

File fXmlFile = new File("/Users/mkyong/staff.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);

//optional, but recommended
//read this - http://stackoverflow.com/questions/13786607/normalization-in-dom-parsing-with-java-how-does-it-work
doc.getDocumentElement().normalize();

System.out.println("Root element :" + doc.getDocumentElement().getNodeName());

NodeList nList = doc.getElementsByTagName("staff");

System.out.println("----------------------------");

for (int temp = 0; temp < nList.getLength(); temp++) {

Node nNode = nList.item(temp);

System.out.println("\nCurrent Element :" + nNode.getNodeName());

if (nNode.getNodeType() == Node.ELEMENT_NODE) {

Element eElement = (Element) nNode;

System.out.println("Staff id : " + eElement.getAttribute("id"));
System.out.println("First Name : " + eElement.getElementsByTagName("firstname").item(0).getTextContent());
System.out.println("Last Name : " + eElement.getElementsByTagName("lastname").item(0).getTextContent());
System.out.println("Nick Name : " + eElement.getElementsByTagName("nickname").item(0).getTextContent());
System.out.println("Salary : " + eElement.getElementsByTagName("salary").item(0).getTextContent());

}
}
} catch (Exception e) {
e.printStackTrace();
}
}

}

『柒』 java 讀取和修改本地xml配置文件

dom4j解析
package demo;
import java.io.*;

import org.dom4j.*;
import org.dom4j.io.*;
import java.util.*;

public class WriteXML {
public void writer(){
//在內存中創建一個文檔對象
Document doc=DocumentHelper.createDocument();
//往文檔對象中添加一個元素
Element root=doc.addElement("users");
//將上面創建元素的設為根元素
doc.setRootElement(root);

//為根元素添加一個名稱為user的子元素
Element user1=root.addElement("user");
//為user子元素添加一個id的屬性 並賦值
user1.addAttribute("id","1");
//為user子元素添加一個子元素
Element name1=user1.addElement("name");
//為name子元素設置文本
name1.setText("zz");
Element config1=user1.addElement("config");
config1.setText("fullscreen");

Element user2=root.addElement("user");
//為user子元素添加一個id的屬性 並賦值
user2.addAttribute("id","2");
//為user子元素添加一個子元素
Element name2=user2.addElement("name");
//為name子元素設置文本
name2.setText("xx");
Element config2=user2.addElement("config");
config2.setText("widescreen");

//下面將會進行輸出產生XML文件
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("GBK");
format.setIndent(true);
format.setNewLineAfterNTags(1);
format.setNewlines(true);

try {
XMLWriter writer=new XMLWriter(new FileOutputStream("users.xml"),format);
writer.write(doc);
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

/*
Element user2=user1.createCopy();
user2.attribute("id").setValue("2");
Iterator it=user2.elementIterator();
while(it.hasNext()){
it.next();
}*/

}
}

『捌』 Java讀取xml配置文件:

你用DOM把賬號節點取出來
然後用String中的split方法做切割
就可以放到數組里了
如果單純是想看賬號是不是在這個裡面
你也可以直接String.indexof查找讀出來的信息中有沒有你要的賬號

『玖』 急!java讀取xml文件

packagetestAll.t20150904;

importjava.io.ByteArrayInputStream;
importjava.io.IOException;

importjavax.xml.parsers.DocumentBuilder;
importjavax.xml.parsers.DocumentBuilderFactory;
importjavax.xml.parsers.ParserConfigurationException;

importorg.w3c.dom.Document;
importorg.w3c.dom.Element;
importorg.w3c.dom.NodeList;
importorg.xml.sax.SAXException;

publicclassTest{
publicstaticvoidmain(String[]args)throwsSAXException,IOException,ParserConfigurationException{
Stringxml="<?xmlversion="1.0"encoding="GB2312"?><Database><User><Itemid="1"name=""/><Itemid="2"name=""/><Itemid="3"name=""/></User><Dept><Itemid="1"name=""/><Itemid="2"name=""/><Itemid="3"name=""/></Dept></Database>";
ByteArrayInputStreams=newByteArrayInputStream(xml.getBytes());
DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();
DocumentBuilderbuilder=factory.newDocumentBuilder();
Documentdoc=builder.parse(s);
ElementDatabase=(Element)doc.getElementsByTagName("Database").item(0);
ElementUser=(Element)Database.getElementsByTagName("User").item(0);
ElementDept=(Element)Database.getElementsByTagName("Dept").item(0);
NodeListusers=User.getChildNodes();
System.out.println("User:");
for(inti=0;i<users.getLength();i++){
Elementuser=(Element)users.item(i);
System.out.println("id="+user.getAttribute("id")+",name="+user.getAttribute("name"));
}
NodeListdepts=Dept.getChildNodes();
System.out.println("Dept:");
for(inti=0;i<depts.getLength();i++){
Elementdept=(Element)depts.item(i);
System.out.println("id="+dept.getAttribute("id")+",name="+dept.getAttribute("name"));
}

}
}

『拾』 java如何讀取XML配置文件

學一下jdom吧,很簡單的,可以很方便的提取xml的值,網上很多相關教程(推薦張龍的xml培訓視頻)

閱讀全文

與java讀取配置文件xml相關的資料

熱點內容
java常用的伺服器 瀏覽:277
集結APP在哪裡下載 瀏覽:798
歐洲cf玩什麼伺服器 瀏覽:527
如何連接另一台電腦上的共享文件夾 瀏覽:679
如何讓桌面文件夾搬家到e盤 瀏覽:71
java自動格式化 瀏覽:617
ipad怎麼查看文件夾大小 瀏覽:581
手工粘土解壓球 瀏覽:550
在線視頻教育源碼 瀏覽:39
快四十學什麼編程 瀏覽:754
gnumakelinux 瀏覽:537
視易峰雲伺服器怎麼改系統 瀏覽:535
javamap取值 瀏覽:768
mac和win磁碟加密軟體 瀏覽:474
蘋果為什麼會連接不到伺服器 瀏覽:726
pdf格式文件如何保存 瀏覽:303
小霸王伺服器tx什麼意思 瀏覽:75
解釋dns命令 瀏覽:584
dmx512怎麼編程 瀏覽:744
北京雲主機17t雲伺服器 瀏覽:232