仓酷云

标题: JAVA编程:XML 有用工具类 [打印本页]

作者: 因胸联盟    时间: 2015-1-18 11:37
标题: JAVA编程:XML 有用工具类
通过视频学习比传统的大课堂学习更适合成人化的学习规律。有人说大课堂气氛好,学习氛围浓,热闹,可以认识很多人。xmlpackagecom.elink.util;

/*
*<p>Company:凌科软件www.elingke.com</p>
*@authorliubaojun
*@version1.0
*Createdon2004-11-29
*来历于elinkBSP部分源代码
*/

importjava.io.*;
importjava.util.*;
importjavax.xml.parsers.*;
importjavax.xml.transform.*;
importjavax.xml.transform.dom.*;
importjavax.xml.transform.stream.*;

importorg.w3c.dom.*;
importorg.xml.sax.*;

publicclassXmlUtil
{
publicstaticsynchronizedDocumentnewDocument()
{
Documentdoc=null;
try
{
DocumentBuilderdb=DocumentBuilderFactory.newInstance().
newDocumentBuilder();
doc=db.newDocument();
}
catch(Exceptione)
{
LogUtil.logException(e);
}
returndoc;
}

publicstaticsynchronizedElementcreateRootElement()
{
ElementrootElement=null;
try
{
DocumentBuilderdb=DocumentBuilderFactory.newInstance().
newDocumentBuilder();
Documentdoc=db.newDocument();
rootElement=doc.getDocumentElement();
}
catch(Exceptione)
{
e.printStackTrace();
}
returnrootElement;
}

publicstaticsynchronizedElementgetRootElement(StringfileName)
{
if(fileName==null||fileName.length()==0)
{
returnnull;
}
try
{
ElementrootElement=null;
FileInputStreamfis=newFileInputStream(fileName);
rootElement=getRootElement(fis);
fis.close();
returnrootElement;
}
catch(Exceptione)
{
returnnull;
}
}

publicstaticsynchronizedElementgetRootElement(InputStreamis)
{
if(is==null)
{
returnnull;
}
ElementrootElement=null;
try
{
DocumentBuilderdb=DocumentBuilderFactory.newInstance().
newDocumentBuilder();
Documentdoc=db.parse(is);
rootElement=doc.getDocumentElement();
}
catch(Exceptione)
{
e.printStackTrace();
}
returnrootElement;
}

publicstaticsynchronizedElementgetRootElement(InputSourceis)
{
if(is==null)
{
returnnull;
}
ElementrootElement=null;
try
{
DocumentBuilderdb=DocumentBuilderFactory.newInstance().
newDocumentBuilder();
Documentdoc=db.parse(is);
rootElement=doc.getDocumentElement();
}
catch(Exceptione)
{
e.printStackTrace();
}
returnrootElement;
}

publicstaticsynchronizedElement[]getChildElements(Elementelement)
{
if(element==null)
{
returnnull;
}
Vectorchilds=newVector();
for(Nodenode=element.getFirstChild();node!=null;
node=node.getNextSibling())
{
if(nodeinstanceofElement)
{
childs.add((Element)node);
}
}
Element[]elmt=newElement[childs.size()];
childs.toArray(elmt);
returnelmt;
}

publicstaticsynchronizedElement[]getChildElements(Elementelement,
StringchildName)
{
if(element==null||childName==null||childName.length()==0)
{
returnnull;
}
Vectorchilds=newVector();
for(Nodenode=element.getFirstChild();node!=null;
node=node.getNextSibling())
{
if(nodeinstanceofElement)
{
if(node.getNodeName().equals(childName))
{
childs.add((Element)node);
}
}
}
Element[]elmt=newElement[childs.size()];
childs.toArray(elmt);
returnelmt;
}

publicstaticsynchronizedNode[]getChildNodes(Nodenode)
{
if(node==null)
{
returnnull;
}
Vectorchilds=newVector();
for(Noden=node.getFirstChild();n!=null;
n=n.getNextSibling())
{
childs.add((Element)n);
}
Node[]childNodes=newElement[childs.size()];
childs.toArray(childNodes);
returnchildNodes;
}

publicstaticsynchronizedElementgetChildElement(Elementelement,
StringchildName)
{
if(element==null||childName==null||childName.length()==0)
{
returnnull;
}
Elementchilds=null;
for(Nodenode=element.getFirstChild();node!=null;
node=node.getNextSibling())
{
if(nodeinstanceofElement)
{
if(node.getNodeName().equals(childName))
{
childs=(Element)node;
break;
}
}
}
returnchilds;
}

publicstaticsynchronizedElementgetChildElement(Elementelement)
{
if(element==null)
{
returnnull;
}
Elementchilds=null;
for(Nodenode=element.getFirstChild();node!=null;
node=node.getNextSibling())
{
if(nodeinstanceofElement)
{
childs=(Element)node;
break;
}
}
returnchilds;
}

publicstaticsynchronizedString[]getElenentValues(Elementelement)
{
if(element==null)
{
returnnull;
}
Vectorchilds=newVector();
for(Nodenode=element.getFirstChild();node!=null;
node=node.getNextSibling())
{
if(nodeinstanceofText)
{
childs.add(node.getNodeValue());
}
}
String[]values=newString[childs.size()];
childs.toArray(values);
returnvalues;
}

publicstaticsynchronizedStringgetElenentValue(Elementelement)
{
if(element==null)
{
returnnull;
}
StringretnStr=null;
for(Nodenode=element.getFirstChild();node!=null;
node=node.getNextSibling())
{
if(nodeinstanceofText)
{
Stringstr=node.getNodeValue();
if(str==null||str.length()==0
||str.trim().length()==0)
{
continue;
}
else
{
retnStr=str;
break;
}
}
}
returnretnStr;
}

publicstaticsynchronizedElementfindElementByName(Elemente,Stringname)
{
if(e==null||name==null||name.length()==0)
{
returnnull;
}
Stringnodename=null;
Element[]childs=getChildElements(e);
for(inti=0;i<childs.length;i++)
{
nodename=childs[i].getNodeName();
if(name.equals(nodename))
{
returnchilds[i];
}
}
for(inti=0;i<childs.length;i++)
{
Elementretn=findElementByName(childs[i],name);
if(retn!=null)
{
returnretn;
}
}
returnnull;
}
publicstaticsynchronizedElementfindElementByAttr(Elemente,StringattrName,
StringattrVal)
{
returnfindElementByAttr(e,attrName,attrVal,true);
}

publicstaticsynchronizedElementfindElementByAttr(Elemente,StringattrName,
StringattrVal,booleandept)
{
if(e==null||attrName==null||attrName.length()==0
||attrVal==null||attrVal.length()==0)
{
returnnull;
}
StringtmpValue=null;
Element[]childs=getChildElements(e);
for(inti=0;i<childs.length;i++)
{
tmpValue=childs[i].getAttribute(attrName);
if(attrVal.equals(tmpValue))
{
returnchilds[i];
}
}
if(dept)
{
for(inti=0;i<childs.length;i++)
{
Elementretn=findElementByAttr(childs[i],attrName,attrVal);
if(retn!=null)
{
returnretn;
}
}
}
returnnull;
}

publicstaticsynchronizedStringformatXml(Elemente)
{
returnformatXml(e,0);
}

/**
*格局化XML输入串.
*/
publicstaticsynchronizedStringformatXml(Elemente,intindent)
{
indent++;
for(Noden=e.getFirstChild();n!=null;n=n.getNextSibling())
{
appendIndent(e,n,indent);
if(!n.getNodeName().equals("#text"))
{
formatXml((Element)n,indent);
}
}
indent--;
appendIndent(e,indent);
returne.toString();
}

/**
*在指定的节点前拔出格局暗示.
*/
privatestaticsynchronizedvoidappendIndent(Elemente,Nodepos,intindent)
{
Documentdoc=e.getOwnerDocument();
if(indent==0)
{
e.insertBefore(doc.createTextNode("
"),pos);
}
for(inti=0;i<indent;i++)
{
if(i==0)
{
e.insertBefore(doc.createTextNode("
        "),pos);
}
else
{
e.insertBefore(doc.createTextNode("        "),pos);
}
}
}

/**
*追加格局暗示.
*/
privatestaticsynchronizedvoidappendIndent(Elemente,intindent)
{
Documentdoc=e.getOwnerDocument();
if(indent==0)
{
e.appendChild(doc.createTextNode("
"));
}
for(inti=0;i<indent;i++)
{
if(i==0)
{
e.appendChild(doc.createTextNode("
        "));
}
else
{
e.appendChild(doc.createTextNode("        "));
}
}
}

publicstaticsynchronizedvoidsetAttribute(Elemente,Stringname,Stringvalue)
{
if(e==null||name==null||name.length()==0||value==null
||value.length()==0)
return;
else
e.setAttribute(name,value);
}

publicstaticsynchronizedStringgetAttribute(Elemente,Stringname)
{
returngetAttribute(e,name,null);
}
publicstaticsynchronizedStringgetAttribute(Elemente,Stringname,Stringdefval)
{
if(e==null||name==null||name.length()==0)
returndefval;
else
returne.getAttribute(name);
}

publicvoidtransformerWrite(Elementdoc,Stringfilename)throwsException
{
DOMSourcedoms=newDOMSource(doc);
Filef=newFile(filename);
StreamResultsr=newStreamResult(f);
transformerWrite(doms,sr);
}

publicvoidtransformerWrite(Elementdoc,Filefile)throwsException
{
DOMSourcedoms=newDOMSource(doc);
StreamResultsr=newStreamResult(file);
transformerWrite(doms,sr);
}

publicvoidtransformerWrite(Elementdoc,OutputStreamoutstream)throwsException
{
DOMSourcedoms=newDOMSource(doc);
StreamResultsr=newStreamResult(outstream);
transformerWrite(doms,sr);
}

publicvoidtransformerWrite(Elementdoc,Writeroutwriter)throwsException
{
DOMSourcedoms=newDOMSource(doc);
StreamResultsr=newStreamResult(outwriter);
transformerWrite(doms,sr);
}

publicvoidtransformerWrite(DOMSourcedoms,StreamResultsr)throwsException
{
TransformerFactorytf=TransformerFactory.newInstance();
Transformert=tf.newTransformer();
t.setOutputProperty(OutputKeys.ENCODING,"GBK");
t.transform(doms,sr);
}
}



最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。
作者: 海妖    时间: 2015-1-21 11:10
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
作者: 冷月葬花魂    时间: 2015-2-1 12:07
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
作者: 变相怪杰    时间: 2015-2-15 07:23
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
作者: 若天明    时间: 2015-3-4 11:23
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
作者: 分手快乐    时间: 2015-3-4 11:23
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
作者: 小魔女    时间: 2015-3-11 18:47
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
作者: 爱飞    时间: 2015-3-11 19:59
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
作者: 柔情似水    时间: 2015-3-15 11:19
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
作者: 仓酷云    时间: 2015-3-17 19:37
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
作者: 兰色精灵    时间: 2015-3-24 21:41
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
作者: 老尸    时间: 2015-4-3 03:13
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
作者: 深爱那片海    时间: 2015-4-3 03:46
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
作者: 愤怒的大鸟    时间: 2015-4-6 18:10
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
作者: 金色的骷髅    时间: 2015-4-8 00:11
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
作者: 透明    时间: 2015-4-16 04:05
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
作者: 飘灵儿    时间: 2015-4-18 10:44
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
作者: 只想知道    时间: 2015-4-25 04:27
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
作者: 因胸联盟    时间: 2015-4-27 13:48
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2