服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

学习java&xml心得(2)


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

扫描关注微信公众号