日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java xml 文件_Java 对xml文件的读写操作

發(fā)布時間:2025/3/19 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java xml 文件_Java 对xml文件的读写操作 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

/**

*?描述:數(shù)據(jù)庫初始化基本類

*

*?@作者?王群

*?@創(chuàng)建日期?2010-04-08

*?@修改人?xxx

*?@修改日期?xxx

*?@檢查人?xxx

*?@檢查日期?xxx

*/

importjava.sql.SQLException;

importcom.ibatis.sqlmap.client.SqlMapClient;

importcom.oumasoft.bstmanage.ibatis.SqlMapConfig;

importcom.oumasoft.bstmanage.ibatis.data.JsgnPo;

importcom.oumasoft.bstmanage.ibatis.data.Test;

importjava.util.*;

importorg.w3c.dom.*;

importjava.io.*;

importjavax.servlet.http.HttpServletRequest;

importjavax.xml.transform.stream.*;

importorg.w3c.dom.*;

importjavax.xml.transform.*;

importjavax.xml.parsers.*;

importjavax.xml.transform.dom.*;

importorg.apache.log4j.Logger;

importcom.oumasoft.bstmanage.ibatis.dao.ClientDao;

publicclassInitDBDao{

staticLogger?logger?=?Logger.getLogger(ClientDao.class.getName());

staticSqlMapClient?sqlMap?=null;

privatestaticFile?file?=null;//讀寫文件

privatestaticDocumentBuilderFactory?factory?=null;

privatestaticDocumentBuilder?builder?=null;

/**

*?將修改的內(nèi)容添加到xml文件中

*?@param?document?xml節(jié)點

*?@param?filename?文件路徑

*?@return?是否寫入成功

*/

publicstaticbooleandoc2XmlFile(Document?document,?String?filename)?{

booleanflag?=true;

try{

/**?將document中的內(nèi)容寫入文件中?*/

TransformerFactory?tFactory?=?TransformerFactory.newInstance();

Transformer?transformer?=?tFactory.newTransformer();

/**?編碼?*/

//transformer.setOutputProperty(OutputKeys.ENCODING,?"GBK");

DOMSource?source?=?newDOMSource(document);

//判斷路徑開頭有沒有“/”如果有則去掉

filename?=?"C".equals(filename.charAt(0))???filename?:?filename.substring(1);

StreamResult?result?=?newStreamResult(newFileOutputStream(filename));

transformer.transform(source,?result);

}?catch(Exception?ex)?{

flag?=?false;

ex.printStackTrace();

}

returnflag;

}

/**

*?讀取xml文件

*?@param?filename?文件路徑

*?@return?文件節(jié)點

*/

publicstaticDocument?load(String?filename)?{

Document?document?=?null;

try{

factory?=?DocumentBuilderFactory.newInstance();

builder?=?factory.newDocumentBuilder();

//判斷路徑開頭有沒有“/”如果有則去掉

filename?=?"C".equals(filename.charAt(0))???filename?:?filename.substring(1);

document?=?builder.parse(newFileInputStream(filename));

document.normalize();

}?catch(Exception?ex)?{

ex.printStackTrace();

logger.error("找不到文件!");

}

returndocument;

}

/**

*?添加新的節(jié)點

*?根節(jié)點下沒有節(jié)點的話直接添加

*?根節(jié)點下沒有重名的直接添加

*?有重名的節(jié)點則更新節(jié)點屬性

*?@param?filePath?文件路徑

*?@param?nodeName?添加、更新的節(jié)點名

*?@param?attr?屬性集合

*?@return?是否成功

*/

publicstaticbooleanxmlAddDemoAttri(String?filePath,String?nodeName,Map?attr)?{

Document?document?=?load(filePath);

Node?root?=?document.getDocumentElement();

//創(chuàng)建節(jié)點元素,并命名

Element?element?=document.createElement(nodeName);

//向節(jié)點中添加屬性

for(Object?key?:?attr.keySet().toArray())?{

element.setAttribute(key.toString(),?attr.get(key));

}

//找到根節(jié)點

NodeList?nodeList?=?document.getElementsByTagName("Context");

//先判斷根節(jié)點下有沒有子節(jié)點,沒有的話直接添加

Node?rootNode?=?nodeList.item(0);

if(!root.hasChildNodes()){

nodeList.item(0).appendChild(element);

}else{

//如果有重復的節(jié)點,flag=true;

booleanflag?=false;

NodeList?rootChs?=?rootNode.getChildNodes();

//循環(huán)根節(jié)點下的所有子節(jié)點

for(inti?=0;?i?

Node?node?=?rootChs.item(i);

//如果沒有重名,并且是最后一個節(jié)點的就添加

if(!nodeName.equals(node.getNodeName())?&&?!flag?&&?(i+1)?==?rootChs.getLength()){

nodeList.item(0).appendChild(element);

}elseif(nodeName.equals(node.getNodeName())){

//有重名的就看name屬性,name一樣就修改屬性

if(node.hasAttributes()){

//如果有屬性項,判斷name屬性值,如果name的值相同,則修改其他屬性

if(null!=?node.getAttributes().getNamedItem("name")?&&?attr.get("name").equals(node.getAttributes().getNamedItem("name").getNodeValue())){

//?生成一個屬性對象

Attr?chAttr?=?null;

//向節(jié)點中添加屬性

for(Object?key?:?attr.keySet().toArray())?{

//不更新name屬性

if(!"name".equals(key.toString())){

chAttr?=?document.createAttribute(key.toString());

chAttr.setValue(attr.get(key));

}

}

node.getAttributes().setNamedItem(chAttr);

}elseif(null!=?node.getAttributes().getNamedItem("name")?&&?!attr.get("name").equals(node.getAttributes().getNamedItem("name").getNodeValue())?&&?!flag?&&?(i+1)?==?rootChs.getLength()){

//如果name的值不相同,且都沒有相同的節(jié)點,添加新的節(jié)點

nodeList.item(0).appendChild(element);

}

}

}

}

}

//?將修改的內(nèi)容添加到xml文件中

returndoc2XmlFile(document,?filePath);

}

/**

*?查詢xml文件中指定節(jié)點的制定屬性值,對于重名的節(jié)點可以通過conditions屬性進行篩選

*?@param?filePath?xml文件路徑

*?@param?nodeName?節(jié)點名

*?@param?conditions?條件屬性,只有全部符合才會返回attr指定的屬性的值

*?@param?attr?要查詢的屬性

*?@return?查詢的屬性的值

*/

publicstaticString?xmlReadDemoAttri(String?filePath,String?nodeName,Map?conditions,String?attr)?{

String?returnStr?=?null;

Document?document?=?load(filePath);

Node?root?=?document.getDocumentElement();

//找到根節(jié)點

NodeList?nodeList?=?document.getElementsByTagName("Context");

//先找到context根節(jié)點

Node?rootNode?=?nodeList.item(0);

if(!root.hasChildNodes()){

//沒有子節(jié)點

}else{

NodeList?rootChs?=?rootNode.getChildNodes();

//循環(huán)根節(jié)點下的所有子節(jié)點

for(inti?=0;?i?

Node?node?=?rootChs.item(i);

//查找Resource連接節(jié)點

if(nodeName.equals(node.getNodeName())){

booleanisOk?=false;

//對于有重名的節(jié)點,將節(jié)點的屬性與條件比較

for(Object?key?:?conditions.keySet().toArray())?{

String?value?=?conditions.get(key);

String?nodeValue?=?node.getAttributes().getNamedItem(key.toString()).getNodeValue();

//如果相同的屬性,但是值不一樣則退出循環(huán)

if(!value.equals(nodeValue)){

isOk?=?true;

break;

}

}

//節(jié)點中屬性與條件屬性一旦出現(xiàn)不一樣這中斷本次循環(huán)

if(isOk){

continue;

}else{

if(null!=?node.getAttributes()?&&null!=?node.getAttributes().getNamedItem(attr)){

returnStr?=?node.getAttributes().getNamedItem(attr).getNodeValue();

}

}

}

}

}

returnreturnStr;

}

/**

*?對比xml文件中指定節(jié)點name屬性值與指定值是否相等

*?@param?filePath?xml文件路徑

*?@param?nodeName?節(jié)點名

*?@param?nameValue?制定的name值

*?@return?boolean值,相同返回True

*/

publicstaticbooleanxmlReadDemoEqualsByName(String?filePath,String?nodeName,String?nameValue)?{

booleanreturnStr?=false;

Document?document?=?load(filePath);

Node?root?=?document.getDocumentElement();

//找到根節(jié)點

NodeList?nodeList?=?document.getElementsByTagName("Context");

//先找到context根節(jié)點

Node?rootNode?=?nodeList.item(0);

if(!root.hasChildNodes()){

//沒有子節(jié)點

returnfalse;

}else{

NodeList?rootChs?=?rootNode.getChildNodes();

//循環(huán)根節(jié)點下的所有子節(jié)點

for(inti?=0;?i?

Node?node?=?rootChs.item(i);

//查找Resource連接節(jié)點

if((nodeName.toLowerCase()).equals(node.getNodeName().toLowerCase())){

if(node.hasAttributes()?&&null!=?node.getAttributes().getNamedItem("name")){

String?attrValue?=?node.getAttributes().getNamedItem("name").getNodeValue();

//如果name屬性值相同,將標志設(shè)置為true

if(nameValue.equals(attrValue)){

returnStr?=?true;

}

}

}

}

}

returnreturnStr;

}

}

總結(jié)

以上是生活随笔為你收集整理的java xml 文件_Java 对xml文件的读写操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。