网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  学习java&xml心得(2)     
  文章作者:未知  文章来源:水木森林  
  查看:75次  录入:管理员--2007-11-17  
 


之前内容请参看:好东西大家分享: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)

 
 
上一篇: 学编程的人不能不看的好文章(4)    下一篇: 学习javabean
  相关文档
2个脚本的同时运行问题 11-17
jdbc连接sqlserver2000 11-17
实现java抽象工厂模式 11-17
hotjava?网络时代的热咖啡 11-17
javaserver faces (jsf) vs struts 11-17
保护applet免遭“窃取”的小技巧 11-17
jbuilder改旗易帜 java ide市场重洗牌 11-17
java入门之:初学java注意什么? 11-17
java基础:详细介绍什么是java的虚拟机 11-29
java规则引擎-drools 11-17
使用socket连接穿越cmwap代理 11-17
一些面向对象的设计法则(1) 11-17
关于数组和list之间相互转换的方法 11-17
网上选课系统.java 11-17
hibernate持久化技术中多对多关系应用 11-17
java规则中级篇 11-17
dao及factory示例 11-17
现代java web开发架构分析 11-16
java本纪之j2se发展演变史 11-17
基础入门:java学习路径七步走 11-17
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息