java xml 文件_Java 对xml文件的读写操作
/**
*?描述:數據庫初始化基本類
*
*?@作者?王群
*?@創建日期?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;
/**
*?將修改的內容添加到xml文件中
*?@param?document?xml節點
*?@param?filename?文件路徑
*?@return?是否寫入成功
*/
publicstaticbooleandoc2XmlFile(Document?document,?String?filename)?{
booleanflag?=true;
try{
/**?將document中的內容寫入文件中?*/
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?文件節點
*/
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;
}
/**
*?添加新的節點
*?根節點下沒有節點的話直接添加
*?根節點下沒有重名的直接添加
*?有重名的節點則更新節點屬性
*?@param?filePath?文件路徑
*?@param?nodeName?添加、更新的節點名
*?@param?attr?屬性集合
*?@return?是否成功
*/
publicstaticbooleanxmlAddDemoAttri(String?filePath,String?nodeName,Map?attr)?{
Document?document?=?load(filePath);
Node?root?=?document.getDocumentElement();
//創建節點元素,并命名
Element?element?=document.createElement(nodeName);
//向節點中添加屬性
for(Object?key?:?attr.keySet().toArray())?{
element.setAttribute(key.toString(),?attr.get(key));
}
//找到根節點
NodeList?nodeList?=?document.getElementsByTagName("Context");
//先判斷根節點下有沒有子節點,沒有的話直接添加
Node?rootNode?=?nodeList.item(0);
if(!root.hasChildNodes()){
nodeList.item(0).appendChild(element);
}else{
//如果有重復的節點,flag=true;
booleanflag?=false;
NodeList?rootChs?=?rootNode.getChildNodes();
//循環根節點下的所有子節點
for(inti?=0;?i?
Node?node?=?rootChs.item(i);
//如果沒有重名,并且是最后一個節點的就添加
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;
//向節點中添加屬性
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的值不相同,且都沒有相同的節點,添加新的節點
nodeList.item(0).appendChild(element);
}
}
}
}
}
//?將修改的內容添加到xml文件中
returndoc2XmlFile(document,?filePath);
}
/**
*?查詢xml文件中指定節點的制定屬性值,對于重名的節點可以通過conditions屬性進行篩選
*?@param?filePath?xml文件路徑
*?@param?nodeName?節點名
*?@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();
//找到根節點
NodeList?nodeList?=?document.getElementsByTagName("Context");
//先找到context根節點
Node?rootNode?=?nodeList.item(0);
if(!root.hasChildNodes()){
//沒有子節點
}else{
NodeList?rootChs?=?rootNode.getChildNodes();
//循環根節點下的所有子節點
for(inti?=0;?i?
Node?node?=?rootChs.item(i);
//查找Resource連接節點
if(nodeName.equals(node.getNodeName())){
booleanisOk?=false;
//對于有重名的節點,將節點的屬性與條件比較
for(Object?key?:?conditions.keySet().toArray())?{
String?value?=?conditions.get(key);
String?nodeValue?=?node.getAttributes().getNamedItem(key.toString()).getNodeValue();
//如果相同的屬性,但是值不一樣則退出循環
if(!value.equals(nodeValue)){
isOk?=?true;
break;
}
}
//節點中屬性與條件屬性一旦出現不一樣這中斷本次循環
if(isOk){
continue;
}else{
if(null!=?node.getAttributes()?&&null!=?node.getAttributes().getNamedItem(attr)){
returnStr?=?node.getAttributes().getNamedItem(attr).getNodeValue();
}
}
}
}
}
returnreturnStr;
}
/**
*?對比xml文件中指定節點name屬性值與指定值是否相等
*?@param?filePath?xml文件路徑
*?@param?nodeName?節點名
*?@param?nameValue?制定的name值
*?@return?boolean值,相同返回True
*/
publicstaticbooleanxmlReadDemoEqualsByName(String?filePath,String?nodeName,String?nameValue)?{
booleanreturnStr?=false;
Document?document?=?load(filePath);
Node?root?=?document.getDocumentElement();
//找到根節點
NodeList?nodeList?=?document.getElementsByTagName("Context");
//先找到context根節點
Node?rootNode?=?nodeList.item(0);
if(!root.hasChildNodes()){
//沒有子節點
returnfalse;
}else{
NodeList?rootChs?=?rootNode.getChildNodes();
//循環根節點下的所有子節點
for(inti?=0;?i?
Node?node?=?rootChs.item(i);
//查找Resource連接節點
if((nodeName.toLowerCase()).equals(node.getNodeName().toLowerCase())){
if(node.hasAttributes()?&&null!=?node.getAttributes().getNamedItem("name")){
String?attrValue?=?node.getAttributes().getNamedItem("name").getNodeValue();
//如果name屬性值相同,將標志設置為true
if(nameValue.equals(attrValue)){
returnStr?=?true;
}
}
}
}
}
returnreturnStr;
}
}
總結
以上是生活随笔為你收集整理的java xml 文件_Java 对xml文件的读写操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: textrank4zh是_GitHub
- 下一篇: 同时学cpa和Java_2019年,CP