首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 冲浪宝典
学习java&xml心得(2)_java认证
作者:网友供稿 点击:0
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
之前内容请参看:好东西大家分享:java&xml的学习心得(1)
   XMLToolTest.class实现了对xml文档的操作。包括建立一个新xml document.档结构及内容或从指定xml文件或的document.构和内容,output到指定的xml文件(或更新xml文件),获取和设定指定节点名的指定属性(或属性列表),在指定节点添加子节点、删除子节点、编辑子节点(先删除在添加,待完善),支持在文档中定位(下标定位,和查询定位,如:定位到test节点的 name attribute的value=\"张治中\"的节点,有简单的复合查询定位,暂时是全and的关系. :) ),定位后可以和全面的操作联合使用(有点数据库的影子,和自己想做的应用有关)。后来又根据它做了一个数据库和xml对导的例子。代码如下:

package com.ceic.workflow.xml.Tool;
import com.ceic.workflow.xml.*;
import org.w3c.dom.*;
/**
* Title: XML处理工具的 运算和实现部分的接口
* Description: XML处理工具的 运算和实现部分的接口
* Copyright: Copyright (c) 2003
* Company: 国电信息中心
* @author 张治中
* @version 1.0
* XML处理工具的 运算和实现部分 的接口
* XMLTool的实现子类,其中的XML解析器从XMLParserFactory中获得.
* 没有说明的方法和参数参见XMLTool接口.
*/
public class XMLToolTest implements XMLTool
{
private XMLParser parser;
private String ParserType=
XMLParserFactory.getDefaultType();
private String ParserClassName=\"\";
private int Index=0;
private String markName=\"\";
private document.nbspdoc;
private int DefaultBegin=0;
private String encoding=\"UTF8\";
private String filepath=\"\";
private boolean EnableMakeUp=false;
private String header=\" \";
public XMLToolTest()
{

}
public Object Build(String path, boolean vali)
{
if(path!=null&&path.length() >0){
parser=XMLParserFactory.getXMLParser
(ParserType,ParserClassName);
if(parser!=null){
doc=(document.parser.parse(path,vali);
filepath=path;
return doc;
}
}
return null;
}
public Object Build(String xmlString)
{
if(xmlString!=null&&xmlString.length() >0){
parser=XMLParserFactory.getXMLParser
(ParserType,ParserClassName);
if(parser!=null){
doc=(document.parser.parseString(xmlString);
filepath=\"\";
return doc;
}
}
return null;
}
public void setdocument.ource(document.nbspdocs){
doc=docs;
}

public void setParser(String ParserName, String ClassName)
{
if(ParserName!=null&&ParserName.length() >0){
ParserType=ParserName;
ParserClassName=ClassName;
}
}

public void setProperty(String NodeName,String
propertyName,String value,boolean setall){
try{
NodeList list=doc.getElementsByTagName(NodeName);
if(list.getLength() >0&&value!=null&&value.length()>0)
{
if(setall){
for(int i=0;i

if(propertyName!=null&&propertyName.length()>0)
{

((Element)list.item(i)).setAttribute
(propertyName,value);
}
else{
list.item(i).setNodevalue(value);
}
}

}else{

if(propertyName!=null&&propertyName.length()>0){
if(NodeName.equals(markName)){
((Element)list.item(Index)).setAttribute
(propertyName,value);
}
else{
((Element)list.item(DefaultBegin)).
setAttribute(propertyName,value);
}
}else{

if(NodeName.equals(markName)){
list.item(Index).setNodevalue(value);
}
else{
list.item(DefaultBegin).setNodevalue(value);
}

}
}
}
}catch(Exception ee){
System.out.println(\"设定\"+NodeName+\"节点的\"+
propertyName+\"属性出错\");
}
}
public String getProperty(String NodeName,
String propertyName)
{
try{
NodeList list=doc.getElementsByTagName(NodeName);
if(list.getLength() >0){
if(propertyName!=null&&propertyName.length() >0){
if(NodeName.equals(markName)){
return ((Element)list.item(Index)).getAttribute
(propertyName);
}else{
return ((Element)list.item(DefaultBegin)).
getAttribute(propertyName);
}
}else{
if(NodeName.equals(markName)){
return ((Element)list.item(Index)).getNodevalue()
}else{
return ((Element)list.item(DefaultBegin)).
getNodevalue()
}
}
}
return null;
}catch(Exception ee){
System.out.println(\"getProperty(\"+NodeName+\",\"+
propertyName+\");出错\"+ee.getMessage());
return null;
}
}
public String[] getPropertys(String NodeName,
String propertyName)
{
try{
String[] temp;
NodeList list=doc.getElementsByTagName(NodeName);
if(list.getLength() >0){
if(propertyName!=null&&propertyName.length() >0){
temp=new String[list.getLength()];
for(int i=0;i
temp[i]=((Element)list.item(i)).
getAttribute(propertyName);
}
return temp;
}else{
temp=new String[list.getLength()];
for(int i=0;i
temp[i]=((Element)list.item(i)).getNodevalue()
}
return temp;
}
}
return null;
}catch(Exception ee){
System.out.println(\"getPropertys(\"+NodeName+\",\"+
propertyName+\");出错\");
return null;
}
}
public String getParent(String returnAttr){
String tempreturn=\"\";
String tempnode=markName
int tempindex=Index
NodeList list=doc.getElementsByTagName(markName);
Node node=list.item(Index);
if(returnAttr!=null&&returnAttr.length() >0){
tempreturn=((Element)node.getParentNode()).
getAttribute(returnAttr);
}else{
tempreturn=node.getParentNode().getNodevalue()
}
return tempreturn;
}


public void setFormat(String XMLToolName,
String classname){}

public void addNode(String parent, Node NodeName,
boolean addall)
{
try{
NodeList list=doc.getElementsByTagName(parent);

if(list.getLength() >0){
if(addall){
for(int i=0;i
int type=NodeName.getNodeType()
switch(type){
case Node.ATTRIBUTE_NODE: {
((Element)list.item(i)).setAttribute(((Attr)
NodeName).getName() ,((Attr)NodeName).getvalue());
}
default:{
list.item(i).appendChild(NodeName);
}
}
}
}else{
if(parent.equals(markName)){
int type=NodeName.getNodeType()
switch(type){
case Node.ATTRIBUTE_NODE: {
((Element)list.item(Index)).setAttribute
(((Attr)NodeName).getName() ,((Attr)NodeName).getvalue());
}
default:{
list.item(Index).appendChild(NodeName);
}
}
}else{

int type=NodeName.getNodeType()
switch(type){
case Node.ATTRIBUTE_NODE: {
((Element)list.item(DefaultBegin)).
setAttribute(((Attr)NodeName).getName() ,
((Attr)NodeName).getvalue());
}
default:{
list.item(DefaultBegin).appendChild(NodeName);
}
}

}
}

}
}catch(Exception e){
System.out.println(\"增加节点出错\");
}
}
public void delNode(String parent,String NodeName,
boolean delall)
{
try{
NodeList list=doc.getElementsByTagName(parent);
if(list.getLength() >0){
if(delall){
for(int i=0;i
try{
((Element)list.item(i)).removeAttribute(NodeName);
}catch(Exception ee){}

NodeList tlist=list.item(i).getChildNodes()
if(tlist.getLength() >0){
for(int k=0;k
if(NodeName.equals(tlist.item(k).getNodeName())){
short type=tlist.item(k).getNodeType()
if(type==Node.ATTRIBUTE_NODE){
((Element)list.item(i)).removeAttribute
(NodeName);
}
else list.item(i).removeChild(tlist.item(k));
break;
}
}
}

}
}else{
if(parent.equals(markName)){
try{
((Element)list.item(Index)).removeAttribute(NodeName);
}catch(Exception ee){}

NodeList tlist=list.item(Index).getChildNodes()
if(tlist.getLength() >0){
for(int k=0;k
if(NodeName.equals(tlist.item(k).
getNodeName())){
short type=tlist.item(Index).getNodeType()
if(type==Node.ATTRIBUTE_NODE){
((Element)list.item(Index)).
removeAttribute(NodeName);
}
else list.item(Index).removeChild
(tlist.item(k));
break;
}
}
}
}else{
try{
((Element)list.item(DefaultBegin)).removeAttribute
(NodeName);
}catch(Exception ee){}

NodeList tlist=list.item(DefaultBegin).
getChildNodes()
if(tlist.getLength() >0){
for(int k=0;k
if(NodeName.equals(tlist.item(k).
getNodeName())){
short type=tlist.item(Index).
getNodeType()
if(type==Node.ATTRIBUTE_NODE){
((Element)list.item(DefaultBegin)).
removeAttribute(NodeName);
}
else list.item(DefaultBegin).
removeChild(tlist.item(k));
break;
}
}
}

}
}
}
}catch(Exception e){
System.out.println(\"删除节点出错\");
}
}
public void editNode(String parent,String NodeOld,
Node NodeNew,boolean editAll)
{
try{
NodeList list=doc.getElementsByTagName(parent);

if(list.getLength() >0){
if(editAll){
for(int i=0;i
NodeList tlist=list.item(i).getChildNodes()
if(tlist.getLength() >0){
for(int k=0;k
if(NodeOld.equals(tlist.item(k).getNodeName())){
list.item(i).replaceChild(tlist.item(k),NodeNew);
break;
}
}
}
}
}else{
if(parent.equals(markName)){
NodeList tlist=list.item(Index).getChildNodes()
if(tlist.getLength() >0){
for(int k=0;k
if(NodeOld.equals(tlist.item(k).getNodeName())){
list.item(Index).replaceChild(tlist.item(k),
NodeNew);
break;
}
}
}

}else{


NodeList tlist=list.item(DefaultBegin).
getChildNodes()
if(tlist.getLength() >0){
for(int k=0;k
if(NodeOld.equals(tlist.item(k).getNodeName())){
list.item(DefaultBegin).replaceChild
(tlist.item(k),NodeNew);
break;
}
}
}


}
}
}
}catch(Exception e){
System.out.println(\"替换节点出错\");
}
}
public boolean setMark(int index)
{
NodeList list=doc.getElementsByTagName(markName);
if(list.getLength() >0&&index<=list.getLength()-
1&&index>=0 ) {
Index=index;
return true;
}
return false;
}


public boolean setMark(String name,String value)
{
if(value!=null&&value.length() >0){
try{
int i=0;
NodeList list=doc.getElementsByTagName(markName);
boolean attrs=false;
boolean find=false;
if(name!=null&&name.length() >0) attrs=true;
if(list.getLength() >0){
for(i=0;i
if(attrs){
if(value.equals(((Element)list.item(i)).
getAttribute(name))){
find=true;
break;
}
}
else{
if(value.equals(list.item(i).getNodevalue())){
find=true;
break;
}
}
}
if(find){
Index=i;
return true;
}else{
return false;
}
}
}catch(Exception e){
System.out.println(\"setMark(String name,
String value)无效\");
return false;
}
}
return false;
}
public boolean setMarkAdv(String[] name,String[] value,
String operation){
int tempindex=Index;
try{
if(name!=null&&name.length >0&&value!=null&&value.
length >0&&name.length ==value.length){
if(operation==null||operation.length() ==0)
operation =\"and\";
if(!operation.equals(\"and\")&&!operation.equals(\"or\"))
operation=\"and\";
if(operation.equals(\"and\")){
boolean find=true;
int[] results=new int[name.length];
for(int i=0;i
if(setMark(name[i],value[i])){
results[i]=Index
if(i>0){
if(results[i]!=results[i-1]){
find=false;
break;
}
}
}else{
find=false;
break;
}
}
if(find){
return true;
}else{
Index=tempindex;
return false;
}
}else{
boolean thefind=false;
for(int j=0;j
if(setMark(name[j],value[j])){
thefind=true;
break;
}
}
if(thefind){
return true;
}else{
return false;
}
}
}

return false;
}catch(Exception ex){
System.out.println(\"setMarkAdv(String[] name,
String[] value,String operation)出错:\"+ex.getMessage());
Index=tempindex;
return false;
}
}
public void setMarkSign(String NodeName)
{
markName=NodeName;
}
public document.nbspCreatedocument.){
try{
document.nbspnode=((document.Class.forName
(\"com.ibm.xml.dom.document.mpl\").newInstance())
return node;

}catch(Exception ex){
System.out.print(\"找不到com.ibm.xml.dom.document.mpl\");
return null;
}
}
public Element CreateElement(String name){
return doc.createElement(name);
}
public Comment CreateComment(String name){
return doc.createComment(name);
}
public Text CreateText(String name){
return doc.createTextNode(name);
}
public Attr CreateAttr(String name){
return doc.createAttribute(name)
}
public void Output(String path){
Output(path,encoding,doc,false);
}
public void Output(){
Output(filepath,encoding,doc,false);
}
public void setEncoding(String encod){
encoding=encod;
}
public void isEnableMakeUp(){
EnableMakeUp=true;
}
public void isNotEnableMakeUp(){
EnableMakeUp=false;
}
public void Output(String path,Node docu){
Output(path,encoding,docu,false);
}
public void Output(String path,Node docu,boolean noTop){
Output(path,encoding,docu,noTop);
}
public void Output(String path,String NodeName,
boolean noTop){
NodeList list=doc.getElementsByTagName(NodeName);
Node tempnode;
if(list.getLength() >0){
if(NodeName.equals(markName)){
tempnode=list.item(getIndex());
}else{
tempnode=list.item(DefaultBegin);
}
Output(path,encoding,tempnode,noTop);
}
}
public void Output(String path,String NodeName,
int indexs,boolean noTop){
NodeList list=doc.getElementsByTagName(NodeName);
Node tempnode;
if(list.getLength() >0){
if(indexs<=list.getLength() -1){
tempnode=list.item(indexs);
}
else{
if(NodeName.equals(markName)){
tempnode=list.item(getIndex());
}else{
tempnode=list.item(DefaultBegin);
}
}
Output(path,encoding,tempnode,noTop);
}
}
private void Output(String path,String encod,
Node docu,boolean noTop){
try{
if(path!=null&&path.length()>0){
filepath=path;
}
if(encod!=null&&encod.length() >0){
encoding =encod;
}
XmlBuilder builder=new XmlBuilder();
if(!EnableMakeUp){
builder.setIndent(\"\");
builder.setlineSeparator(\"\");
}
builder.setXmlHeader(header);
builder.printDOMTree(docu,noTop);

String result=builder.getXmlResult()

XmlOutput out=new XmlOutput(filepath);
out.setEncoding(encoding);
out.Output(result);
}catch(Exception ee){
System.out.println(ee.getMessage());
System.out.println(\"写入Xml文件:\"+filepath+\" 出错\");
}
}
public int getIndex(){
return Index;
}
public String getCurrentNodeName(){
return markName
}
public document.nbspgetdocument.ource(){
return doc
}
public void setHeader(String Header){
if(Header!=null&&Header.length() >0){
header=Header;
}
}
}
   XMLToolFactory.class 代码如下:

package com.ceic.workflow.xml;

import com.ceic.workflow.xml.Tool.XMLToolTest;
import java.util.*;
/**
* XMLTool的工厂类。为其它类提供XML处理工具的 运算和实现部分的类。
*/
public class XMLToolFactory
{
private static Hashtable table;
private static String defaultType;
private static String ower;
/**
* @roseuid 3ECC2FC101BF
*/
private XMLToolFactory()
{

}
/**
* 获得一个常用XMLTool.
* @return com.ceic.workflow.xml.XMLTool
* @roseuid 3ECC2243019B
*/
public static XMLTool getXMLTool()
{
try{
return ((XMLTool)Class.forName(table.get(ower).
toString()).newInstance());
}catch(Exception ee){
System.out.println(\"获得常用XMLTool出错\");
return null;
}
}
/**
* 获得一个XMLTool.通过参数获得XMLTool的一个实现子类.
* @param type - XMLTool已实现子类在XMLToolFactory中的type名
* @param classname -
* XMLTool实现子类的class名(包含package名),
* 如com.ceic.workflow.xml.tool.XMLToolTest
* .默认为null或空字符串。
* @return com.ceic.workflow.xml.XMLTool
* @roseuid 3ECC2243019B
*/
public static XMLTool getXMLTool(String type,
String classname)
{
try{
if(type==null||type.length() <=0){
type=defaultType;
}
if(table.containsKey(type)){
return ((XMLTool)Class.forName(table.get(type).
toString()).newInstance());
}
if(classname!=null&&classname.length() >0){
try{
XMLTool temp=((XMLTool)Class.forName(classname).
newInstance());
if(type!=null&&type.length() >0){
table.put(type,classname);
}
return temp;
}catch(Exception ee){
System.out.println(ee.getMessage() );
System.out.println(\"指定的XMLTool不存在\");
return null;
}
}
return null;
}catch(Exception e){
System.out.println(e.getMessage() );
System.out.println(\"指定的XMLTool不存在\");
return null;
}
}
public static String getDefaultType(){
return defaultType;
}

static
{
table=new Hashtable();
table.put(\"test\",\"com.ceic.workflow.xml.Tool.
XMLToolTest\");
table.put(\"show\",\"com.ceic.workflow.xml.Tool.
XMLToolShow\");
defaultType=\"test\";
ower=\"show\";
}
}


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·在VB中使用IE的 WebBrowser控件改进界面设计-.NET教程,VB.Net语言
·ASP 生成 XBM 图可用作验证码-ASP教程,ASP应用
·Java IO学习基础之读写文本文件-JSP教程,Java技巧及代码
·Java对象与XML文件之间相互转化(含源代码)-JSP教程,Java技巧及代码
·数字电视机顶盒(二)
·几个C#编程的小技巧 (一)-.NET教程,C#语言
·PHP教程.应用实例8-PHP教程,PHP应用
·自动填充固定行数的 GridView-.NET教程,数据库应用
·用表格巧妙制作导航条按钮-网页设计,Dreamweaver
·JSP的环境引擎--websphere-JSP教程,Jsp/Servlet
最新文章
·王顺铨:站在消费者角度看互联网_站长访谈
·把个人网站转变为商业网站全攻略_站长心得
·创业者与vc的接触之道_站长心得
·photoshop滤镜轻松制作照片柔光效果_photoshop教程
·草根站长离精英还很远很远,厦门站长大会感受_站长心得
·合理的网页设计具有哪些特征_站长心得
·谈谈网站设计的10个要点1_站长心得
·幽灵现象 新网站google排名不稳定的根源_google推广
·我告诉你怎么学搜索_google推广
·google搜索从入门到精通_google推广
相关主题
  • 学习java的30个基本概念_java认证
  • 学习Java的笔记(5)-JSP教程,Java技巧及代码
  • 学习Java的笔记(4)-JSP教程,Java技巧及代码
  • 学习Java的笔记(3)-JSP教程,Java技巧及代码
  • 学习Java的笔记(2)-JSP教程,Java技巧及代码
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭