xml配置文件java
⑴ 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();
}*/
}
}
⑵ xml在java項目中起到的作用具體是什麼
java項目中,xml文件一般都是用來存儲一些配置信息
一般的編程, 多數用來存儲配置信息 . 拿JDBC來說,可以把資料庫連接字元串寫到xml,如果要修改數據源,只需要改xml就可以了,沒必要再去重新編譯java文件,而且,這些配置信息放在一起,別的人來讀你寫的代碼的時候,就方便了很多
框架中的xml , 除了配置信息 , 還可以寫一些對應關系,其實也是一種配置信息 .拿struts來說,xml配置的是頁面url對應後台java類(action)的關系,在配置和修改的時候,只需要改一個xml文件就可以了,沒必要一個個的查找java代碼
java項目完成之後,每個模塊應該都是獨立的,模塊之間的關系都可以使用xml來進行維護,spring就是這樣的一個框架
一個好的項目,需要有良好的可拓展性,如果把所有的邏輯關系還有配置信息都寫入代碼中,會使程序的可拓展性變差,為了解決這個問題,xml就可以對整個項目進行調度(spring)
還有使用xml作為數據儲存,不過用起來很少,多數還是用來存放配置信息
⑶ Java讀取xml配置文件:
你用DOM把賬號節點取出來
然後用String中的split方法做切割
就可以放到數組里了
如果單純是想看賬號是不是在這個裡面
你也可以直接String.indexof查找讀出來的信息中有沒有你要的賬號
⑷ java讀取配置文件的方法(xml)
#include <XMLDoc.hpp>
——相關說明
_di_IXMLDocument 為模板類
typedef System::DelphiInterface< IXMLDocument > _di_IXMLDocument;
_di_IXMLNode
typedef System::DelphiInterface< IXMLNode > _di_IXMLNode;
_di_IXMLNodeList 同
——類方法
//設置參數
void TXXX::setOptions(String name,String value){
//創建文檔對象
_di_IXMLDocument XMLDoc = LoadXMLDocument(L"文件路徑");
XMLDoc->Active=true;
//文檔根節點
_di_IXMLNode root = XMLDoc->DocumentElement;
//想要查找節點
_di_IXMLNode tempNode;
//調用搜索方法
searchXml(name,root,tempNode);
// 處理
if(tempNode!=NULL)
tempNode->SetText(value);
XMLDoc->SaveToFile(L"文件路徑");
}
//遞歸搜索參數節點樹
void TXXX::searchXml(String name,_di_IXMLNode &Parent_Node,_di_IXMLNode& tempNode){
_di_IXMLNode Child_Node; //子結點
//子節點列表
_di_IXMLNodeList list = Parent_Node->ChildNodes;
for(int i=0;i<list->Count;i++)
{
Child_Node = list->Get(i);
//遞歸結束條件
if(Child_Node->GetNodeName()==name)
{
tempNode = Child_Node;
break;
}
else
{
//遞歸函數
searchXml(name,Child_Node,tempNode);
}
}
}
⑸ 通過java怎麼配置xml文件
JAVA與XML文件,可以說是軟體開發的「黃金搭檔」,而如何使用JAVA完成對XML文件的讀取,是我們首先要解決的問題。
一、XML文件
這個示例文件包括了用來打開ORACLE資料庫的各種參數
<?xml version="1.0" encoding="UTF-8"?>
<dbmsg>
<dbinfo>
<drivername>oracle.jdbc.driver.OracleDriver</drivername>
<sConnStr>jdbc:oracle:thin:@11.88.225.80:1521:VOUCHERDB</sConnStr>
<username>SYS AS SYSDBA</username>
<password>voucherdb</password>
</dbinfo>
</dbmsg>
二、編寫類名為ReadXml的類,用於解析XML文件
我們要在應用程序中打開資料庫,就必須完成對該文件中drivername、sConnStr、username、password的讀取,通過查找有關資料,筆者編制了以下程序,用於讀取文件名為filename的XML文件。
package voucher.basic;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class ReadXml {
private String drivername;
private String sConnStr;
private String username;
private String password;
public String getDrivername() {
return drivername;
}
public String getSConnStr() {
return sConnStr;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public void setDrivername(String drivername) {
this.drivername = drivername;
}
public void setSConnStr(String connStr) {
sConnStr = connStr;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public ReadXml(String fileName){
DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();
try {
DocumentBuilder dombuilder=domfac.newDocumentBuilder();
InputStream is=new FileInputStream(fileName);
Document doc=dombuilder.parse(is);
Element root=doc.getDocumentElement();
NodeList dbinfo=root.getChildNodes();
if(dbinfo!=null){
for(int i=0;i<dbinfo.getLength();i++){
Node db=dbinfo.item(i);
for(Node node=db.getFirstChild();node!=null;node=node.getNextSibling()){
if(node.getNodeType()==Node.ELEMENT_NODE){
if(node.getNodeName().equals("drivername")){
setDrivername(node.getFirstChild().getNodeValue());
}
if(node.getNodeName().equals("sConnStr")){
setSConnStr(node.getFirstChild().getNodeValue());
}
if(node.getNodeName().equals("username")){
setUsername(node.getFirstChild().getNodeValue());
}
if(node.getNodeName().equals("password")){
setPassword(node.getFirstChild().getNodeValue());
}
}
}
}
}
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
這個以ReadXml命名的類,使用了參數為文件名的構造方法,用戶只要將配置文件我名稱傳遞給該方法,就可以完成對XML文件的解析,進而完成對相應參數數的讀取。三、如何獲取XML文件全路徑並讀取配置參數
獲取XML文件全路徑的方法有兩個,一是在servlet中獲取,二是在單獨的JAVA類中獲取。
1.在servlet中獲取XML文件的全路徑並讀取配置參數
程序片段String dirPath = getServletContext().getRealPath( "/WEB-INF");
String fileName = dirPath + "/conn.xml";
ReadXml xm = new ReadXml(fileName);
String DriverName = xm.getDrivername();
String connStr = xm.getSConnStr();
String user = xm.getUsername();
String pas = xm.getPassword();
將這段程序添加到servlet中dopost()之後即可完成參數的讀取
2.在單獨的JAVA類中獲取全路徑並讀取配置參數
程序片段String dirpath = System.getProperty("user.dir");
String xmlFile = dirpath + "/WebRoot/WEB-INF/conn.xml";
ReadXml rdxml = new ReadXml(xmlFile);
String driverName = rdxml.getDrivername();
String sConnStr = rdxml.getSConnStr();
String userName = rdxml.getUsername();
String passWord = rdxml.getPassword();註:配置文件conn.xml保存在webroot/WEB-INF目錄中。
⑹ 關於java中xml文件配置的路徑問題
配置文件可以做路徑映射的,通常/static/css/是可以直接訪問的,/WEB-INF/html/是不能直接訪問的,必須通過servlet或者其他類似controller訪問。
樓上2位沒說全,"/"在java代碼裡面才需要轉義,頁面上是不需要的;
"/" 代表的不是當前文件夾,代表的是根路徑,"./"才是當前文件夾。
⑺ XML配置文件怎麼寫,都有些什麼屬性java代碼如何解析XML配置文件
xml是類似這種的:
<?xml version="1.0" encoding="gbk"?>
<head></head>
<body></body>
可以在節點中加屬性例如:
<body id = "" name = ""></body>
java代碼解析一般用DOM4j.分兩種類型的解析方式:
1.DOM: Document Object Model 文檔對象模型
樹形結構裝載到內存中.完成後才開始解析.
缺點:如果文件比較大,內存有壓力,時間會延遲.
優點:可以對樹形結構做任何操作:加節點,刪節點,遍歷...
2.SAX: Simple API for XML
流(Stream)的特徵,解析可以立即開始.
不保存數據. 對內存無壓力.不能修改節點.
適合大文件的解析.
下面附上代碼:
public static List<String> parseCustomXML(String fileName) {
// 定義解析器
SAXReader saxReader = new SAXReader();
List<String> eleList = new ArrayList<String>();
// 開始解析,返迴文檔對象
/*
* <root>
<msg>
<element totalLenghtorder = "1" totalLenghtlenght = "8">totalLenght</element>
<element totalLenghtorder = "2" totalLenghtlenght = "8">bodyLenght</element>
<element jydmorder = "3" jydmlenght = "6">jydm</element>
<element msgTypeorder = "4" msgTypelenght = "2">msgType</element>
<element sendSignorder = "5" sendSignlenght = "1">sendSign</element>
<element msgCheckCodeorder = "6" msgCheckCodelenght = "32">msgCheckCode</element>
<element serviceNameorder = "7" serviceNamelenght = "8">serviceName</element>
<element msgAgreementorder = "8" msgAgreementlenght = "1">msgAgreement</element>
<element cprqorder = "9" cprqlenght = "8">cprq</element>
<element fkrzhorder = "10" fkrzhlenght = "20">fkrzh</element>
<element pjhmorder = "11" pjhmlenght = "8">pjhm</element>
<element jeorder = "12" jelenght = "20">je</element>
<element zfmmorder = "13" zfmmlenght = "20">zfmm</element>
<element jghorder = "14" jghlenght = "20">jgh</element>
<element yhdmorder = "15" yhdmlenght = "20">yhdm</element>
</msg>
</root>
*/
try {
Document doc = saxReader.read(new File(fileName));
Element root = doc.getRootElement();// 獲取根節點
Element msg = root.element("msg");
Iterator itEle = msg.elementIterator("element");// 遍歷msg節點下的所有element節點
while (itEle.hasNext()) {
Element element = (Element) itEle.next();
String value = element.getText();
//測試
System.out.println(value);
eleList.add(value);
Iterator itAttr = element.attributeIterator();// 遍歷每一個element節點的所有屬性
while (itAttr.hasNext()) {
Attribute attr = (Attribute) itAttr.next();
//String keyAttr = attr.getName();
String valueAttr = attr.getValue();
//測試
System.out.println(valueAttr);
eleList.add(valueAttr);
}
}
} catch (DocumentException e) {
e.printStackTrace();
}
return eleList;
}
有不明白的 在幫你分析
⑻ 剛學框架,xml配置文件是干什麼用的,為什
xml配置文件被設計用來傳輸和存儲數據,多數用來存儲配置信息 . 拿JDBC來說,可以把資料庫連接字元串寫到xml,如果要修改數據源,只需要改xml就可以了,沒必要再去重新編譯java文件,而且,這些配置信息放在一起,別的人來讀你寫的代碼的時候,就方便了很多框架中的xml , 除了配置信息 , 還可以寫一些對應關系,其實也是一種配置信息 .拿struts來說,xml配置的是頁面url對應後台java類(action)的關系,在配置和修改的時候,只需要改一個xml文件就可以了,沒必要一個個的查找java代碼
java項目完成之後,每個模塊應該都是獨立的,模塊之間的關系都可以使用xml來進行維護,spring就是這樣的一個框架
一個好的項目,需要有良好的可拓展性,如果把所有的邏輯關系還有配置信息都寫入代碼中,會使程序的可拓展性變差,為了解決這個問題,xml就可以對整個項目進行調度(spring)
還有使用xml作為數據儲存,不過用起來很少,多數還是用來存放配置信息
不同的xml起到不同的作用:比如說web項目的中的配置文件起到配置路徑作用,以及跳轉請求的作用。hibernate的配置文件起到配置連接資料庫和相關屬性以及對實體類和關系型資料庫進行映射的的作用,spring的配置文件起到配置javabean的實例化以及整合框架的作用。還有一些xml文件中存放了一些數據供程序讀取。
其實說到底配置文件就是存儲數據用的相當於小型資料庫,使用dom4j等一些讀取寫配置文件jar包就能實現對配置文件的讀取,還有也可以跨語言的媒介!!