org.w3c.dom对XML的操作示例
来源:互联网 发布:方立勋java web 编辑:程序博客网 时间:2024/05/16 14:45
自己写的实际代码,保留下来,以供参考
==XML===============================================================
<?xml version="1.0" encoding="UTF-8"?>
<tenants>
<tenant>
<tenantID>tenantID1</tenantID>
<jndi>jdbc/PlatformDS</jndi>
</tenant>
<tenantID>tenantID2</tenantID>
<jndi>jdbc/PlatformDS2</jndi>
<tenant>
</tenant>
</tenants>
===JAVA==============================================================
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
import org.xml.sax.SAXException;
public class TenantJNDIUtil {
private static String filePath="D:/AppSrv01/config/JNDI.xml";
//private static TenantJNDIUtil singleton;
public static TenantJNDIUtil getInstance()
{
//if(singleton==null)
// singleton=new TenantJNDIUtil();
return new TenantJNDIUtil();
}
public org.w3c.dom.Document getDoc()
{
org.w3c.dom.Document doc=null;
File file = new File(filePath);
if(!file.exists())
{
try {
file.createNewFile();
FileWriter writer=new FileWriter(file,true);
writer.write("<?xml version=/"1.0/" encoding=/"UTF-8/"?><tenants></tenants>");
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
doc=db.parse(file);
} catch (ParserConfigurationException 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();
}
return doc;
}
public boolean saveDoc(org.w3c.dom.Document doc)
{
boolean saved=true;
try {
TransformerFactory tFactory =TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File(filePath));
transformer.transform(source, result);
} catch (Exception e){
saved=false;
}
return saved;
}
public List<String> getAllTenants()
{
List<String> tenants=new ArrayList<String>();
org.w3c.dom.Document doc=getDoc();
NodeList list=doc.getElementsByTagName("tenant");
for(int index=0;index<list.getLength();index++)
{
Element node=(Element)list.item(index);
NodeList tenant=node.getElementsByTagName("tenantID");
tenants.add(tenant.item(0).getFirstChild().getNodeValue());
}
return tenants;
}
public Map<String,String> getAllTenantsJNDI()
{
Map<String,String> tenantsJNDI=new HashMap<String,String>();
org.w3c.dom.Document doc=getDoc();
NodeList list=doc.getElementsByTagName("tenant");
for(int index=0;index<list.getLength();index++)
{
Element node=(Element)list.item(index);
NodeList tenant=node.getElementsByTagName("tenantID");
NodeList jndi=node.getElementsByTagName("jndi");
tenantsJNDI.put(tenant.item(0).getFirstChild().getNodeValue(), jndi.item(0).getFirstChild().getNodeValue());
}
return tenantsJNDI;
}
public List<String> getAllJNDI()
{
List<String> jndis=new ArrayList<String>();
jndis.addAll(getAllTenantsJNDI().values());
return jndis;
}
public boolean ifExistTenant(String tenantID)
{
boolean ifExist=false;
if(getAllTenants().contains(tenantID.toUpperCase()))
ifExist=true;
return ifExist;
}
public boolean ifExistJNDI(String jndi)
{
return getAllJNDI().contains(jndi);
}
public boolean addTenantJNDI(String tenantID,String jndi)
{
if(ifExistTenant(tenantID)||ifExistJNDI(jndi))
return false;
org.w3c.dom.Document doc=getDoc();
Node root=doc.getElementsByTagName("tenants").item(0);
Element ELEtenant=doc.createElement("tenant");
root.appendChild(ELEtenant);
Element ELEtenantID=doc.createElement("tenantID");
Text TtenantID=doc.createTextNode(tenantID.toUpperCase());
ELEtenantID.appendChild(TtenantID);
ELEtenant.appendChild(ELEtenantID);
Element ELEjndi=doc.createElement("jndi");
Text Tjndi=doc.createTextNode(jndi);
ELEjndi.appendChild(Tjndi);
ELEtenant.appendChild(ELEjndi);
return saveDoc(doc);
}
public boolean deleteTenantJNDI(String tenantID)
{
if(!ifExistTenant(tenantID))
return true;
org.w3c.dom.Document doc=getDoc();
Node tenants=doc.getFirstChild();
NodeList children=tenants.getChildNodes();
for(int index=0;index<children.getLength();index++)
{
if(children.item(index) instanceof Element)
{
Element node=(Element)children.item(index);
NodeList tenant=node.getElementsByTagName("tenantID");
if(tenant.item(0).getFirstChild().getNodeValue().equalsIgnoreCase(tenantID))
{
tenants.removeChild(tenants.getChildNodes().item(index));
break;
}
}
}
return saveDoc(doc);
}
public boolean replaceTenantJNDI(String tenantID, String newJNDI)
{
if(!ifExistTenant(tenantID))
return addTenantJNDI(tenantID,newJNDI);
if(ifExistJNDI(newJNDI))
return false;
org.w3c.dom.Document doc=getDoc();
NodeList list=doc.getElementsByTagName("tenant");
for(int index=0;index<list.getLength();index++)
{
Element node=(Element)list.item(index);
NodeList tenant=node.getElementsByTagName("tenantID");
NodeList jndi=node.getElementsByTagName("jndi");
if(tenant.item(0).getFirstChild().getNodeValue().equalsIgnoreCase(tenantID))
{
jndi.item(0).getFirstChild().setNodeValue(newJNDI);
break;
}
}
return saveDoc(doc);
}
}
- org.w3c.dom对XML的操作示例
- org.w3c.dom 对XML 文件的操作
- ORG.W3C.DOM操作XML
- 解析xml--org.w3c.dom
- Java操作XML(使用org.w3c.dom)
- Java操作XML(使用org.w3c.dom)1/3
- Java操作XML(使用org.w3c.dom)2/3
- Java操作XML(使用org.w3c.dom)3/3
- Java操作XML(使用org.w3c.dom)
- Java操作XML(使用org.w3c.dom)
- Java操作XML(使用org.w3c.dom)
- Java操作XML(使用org.w3c.dom)
- java 使用org.w3c.dom操作XML文件
- Java操作XML(使用org.w3c.dom)
- org.w3c.dom 遍历xml文件的两种方法
- org.w3c.dom处理xml的常用方法
- 分享一个 org.w3c.dom XML 封装
- 解析更新XML文档org.w3c.dom
- Linux 下 Qt 4.6.0 嵌入式开发环境的搭建、移植
- MySQL跨表更新与数据合并的方法浅谈
- windows下的junction(交叉) 问题
- PHP缓存机制的具体讲解
- 获取控件绝对位置,显示div
- org.w3c.dom对XML的操作示例
- linux 不删除文件,清空文件内容命令
- Linux内核参数传递Tag
- JavaScript学习(6)使用窗口和框架
- Web Services&XML:使用XML的五种场合
- Java 理论与实践: 处理 InterruptedException
- 搜索引擎入门 -- 实战准备
- flex 4 运行时改变显示层次.类似z轴功能.
- android 调试.so