`
feipigwang
  • 浏览: 746441 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

org.w3c.dom对XML的操作示例

阅读更多

自己写的实际代码,保留下来,以供参考

==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);
}

}

分享到:
评论

相关推荐

    易语言模块 XMLDOM 解析 构造 获取 更改 添加 删除 遍历元素 格式化XML

    W3C 标准 XML DOM 定义了所有 XML 元素的对象和属性,以及访问它们的方法(接口)。 换句话说:XML DOM 是用于获取、更改、添加或删除 XML 元素的标准。 模块简介: 1、XMLDOMDocument类: XML对象文档 -&gt;操作创建或...

    使用dom4j解析XML

    dom4j是一种解析XML文档的开放源代码XML框架。本文介绍如何使用包含在dom4j中的解析器创建并修改...与W3C DOM API相比,使用dom4j所包含的解析器的好处是dom4j拥有本地的XPath支持。DOM解析器不支持使用XPath选择节点。

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    1.2 w3c介绍 2 1.3 关于xml的几个问题 3 1.4 xml与html的比较 4 1.4.1 xml将数据与显示分开 5 1.4.2 xml对文档的格式要求更加严格 6 1.4.3 xml有且只能有一个根元素 6 1.5 xml的编辑工具 7 1.6 xml文档 8 ...

    Java资源加载库Azzet.zip

     // loads from TcpSource saved as "tcp"支持的格式包括:JSON (org.magnos.asset.json.JsonValue)XML (org.w3c.dom.Document)PROPERTIES/XML/CONFIG (java.util.Properties, org.magnos.asset.props.Config...

    xml入门教程/xml入门教程

    2) XML由W3C联盟发展维护; 3) XML是一种元语言,可以用来定义其它标签语言; 4) XML没有定义任何标记,它提供了一种工具定义标记以及它们之间的结构关系; 5) XML是一种用于结构化文本交换的标记语言; 6) XML代表...

    w3c school完全学习手册

    W3C School是一家专门...该手册包含了HTML、XHTML、CSS、XML、DOM、Javascript、Ajax、DHTML、Wap、PHP……等等众多技术的教程、手册及示例,对于Web开发人员来说不可多得。 本压缩包均为目前线上最新的独立chm手册

    w3c school Web 全套教程

    W3C School是一家专门提供Web技术在线教程的网站。...该手册包含了HTML、XHTML、CSS、XML、DOM、Javascript、Ajax、DHTML、Wap、PHP……等等众多技术的教程、手册及示例,对于Web开发人员来说不可多得。大小:9.6M

    从W3C School整理的最全的Web开发chm手册

    W3C School是一家专门提供Web技术在线教程的网站。...该手册包含了HTML、XHTML、CSS、XML、DOM、Javascript、Ajax、DHTML、Wap、PHP……等等众多技术的教程、手册及示例,对于Web开发人员来说不可多得。

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    1.2 w3c介绍 2 1.3 关于xml的几个问题 3 1.4 xml与html的比较 4 1.4.1 xml将数据与显示分开 5 1.4.2 xml对文档的格式要求更加严格 6 1.4.3 xml有且只能有一个根元素 6 1.5 xml的编辑工具 7 1.6 xml文档 8 ...

    [JavaScript.DOM高级程序设计](加)桑贝斯.扫描版.part1.rar

     4.2.6 针对W3C DOM的事件   4.2.7 自定义事件   4.3 控制事件流和注册事件侦听器   4.3.1 事件流   4.3.2 注册事件   4.3.3 在事件侦听器中访问事件对象   4.3.4 跨浏览器的事件属性和方法  ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    1.2 w3c介绍 2 1.3 关于xml的几个问题 3 1.4 xml与html的比较 4 1.4.1 xml将数据与显示分开 5 1.4.2 xml对文档的格式要求更加严格 6 1.4.3 xml有且只能有一个根元素 6 1.5 xml的编辑工具 7 1.6 xml文档 8 ...

    异步调用webservice返回responseXML为空的问题解决方法

    DOM的XML操作可参考的示例:http://www.w3school.com.cn/xmldom/met_document_getelementsbytagname.asp 2)在IE下面还是要通过loadXML来转responseText; 3)xml加载后异步属性设置; 4)命名空间处理等问题; ...

    W2School_Web网站技术教程

    一份很好的教程,http://www.w3school.com.cn整站的web技术教程,资料完整且是中文版,通俗易懂,版面美观,有详尽的语言参考和丰富的示例程序...万维网联盟 (W3C) 浏览器信息 网站品质 语义网 职业规划 网站主机

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    1.2 w3c介绍 2 1.3 关于xml的几个问题 3 1.4 xml与html的比较 4 1.4.1 xml将数据与显示分开 5 1.4.2 xml对文档的格式要求更加严格 6 1.4.3 xml有且只能有一个根元素 6 1.5 xml的编辑工具 7 1.6 xml文档 8 ...

    C#XML入门经典 C#编程人员必备的XML技能.part2

    在C#中使用XML的原因 &lt;br&gt;1.1 使用XML的原因 1.1.1 开放性 1.1.2 简单性 1.1.3 自我描述性 1.1.4 互操作性 1.1.5 结构 1.1.6 分开结构和内容 1.1.7 可扩展性 1.2 什么是XML 1.2.1 XML...

    w3c中文版(html5、css、ajax、asp、js、dhtml)

    w3c wap web webservices wmlscript wsdl xforms xhtml xlink xml xmldom xpath xquery xsl xslfo 解决CHM打开后提示”地址无效”"已取消到该网页的导航”: (1)在所下载的chm文件上 单击右键-属性-解除锁定-确定 ...

    [JavaScript.DOM高级程序设计](加)桑贝斯.扫描版.part2.rar

     4.2.6 针对W3C DOM的事件   4.2.7 自定义事件   4.3 控制事件流和注册事件侦听器   4.3.1 事件流   4.3.2 注册事件   4.3.3 在事件侦听器中访问事件对象   4.3.4 跨浏览器的事件属性和方法  ...

    [JavaScript.DOM高级程序设计](加)桑贝斯.扫描版.part3.rar

     4.2.6 针对W3C DOM的事件   4.2.7 自定义事件   4.3 控制事件流和注册事件侦听器   4.3.1 事件流   4.3.2 注册事件   4.3.3 在事件侦听器中访问事件对象   4.3.4 跨浏览器的事件属性和方法  ...

    精通JavaScript

    1.将该实例复制到C:\Inetpub\wwwroot下; 2.选择浏览器的“工具”-“安全”-“本地Intranet”-“自定义级别”-“活动脚本”中选用“禁用”单选框 3.在浏览器中输入下述地址:http://localhost/1.2.htm • ...

    JavaScript王者归来part.1 总数2

     11.3.2.2 showModalDialog和showModelessDialog--非W3C或ECMAScrip标准   11.3.3 状态栏   11.4 框架--上层的Window对象   11.4.1 多框架应用   11.4.2 框架之间的关系   11.4.3 框架的命名   11.4.4 ...

Global site tag (gtag.js) - Google Analytics