jdom用法大收集,各位踊跃参加!

JavaBoyCaoJi 2003-08-21 06:47:23
1 如何创建一个xml文件并且保存到c:\xml目录下
2 如何查找xml当中地元素 如何修改
3 如何添加节点
等等各位把手头的好货都拿出来吧!!
...全文
39 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
JavaBoyCaoJi 2003-08-21
  • 打赏
  • 举报
回复
有没有读取地列子,读取指定地内容
yyhhtt 2003-08-21
  • 打赏
  • 举报
回复
这是我以前写的一个例子
功能比较简单,只是一个例子
yyhhtt 2003-08-21
  • 打赏
  • 举报
回复
package xmltest;
import org.jdom.*;
import org.jdom.output.XMLOutputter;
import java.math.BigInteger;
import java.io.IOException;
import java.net.*;
import java.io.*;
import org.jdom.input.SAXBuilder;

public class FibonacciJDOM {
int id_int = 0;
//构造函数
public FibonacciJDOM(){
id_int = (int)(Math.random()*100);
}
//读xml文件(获得Document)
public Document readXML(String fileName){
SAXBuilder builder = new SAXBuilder();
Document doc = null;
boolean exists = (new File(fileName)).exists();
if (exists) {
try {
doc = builder.build(fileName);
}
// indicates a well-formedness error
catch (JDOMException e) {
e.printStackTrace();
}
return doc;

} else {
// File or directory does not exist
return null;
}
}
//生成DTD部分(可能在第一次生成时使用)
public void writeDTD(Document doc){
DocType type = new DocType("Fibonacci_Numbers");
String dtd = "<!ELEMENT Fibonacci_Numbers (fibonacci*)>\n";
dtd += "<!ELEMENT fibonacci (#PCDATA)>\n";
dtd += "<!ATTLIST fibonacci index CDATA #IMPLIED>\n";
type.setInternalSubset(dtd);
doc.setDocType(type);
}
public void writeXML(String fileName){
OutputStream fout;
Document doc = new Document();
Element root = new Element("Precision");
//-------读指定的XML文件-------------//
//在这里应判断是否存在是否为第一次向XML里写数据
doc = readXML(fileName);
if(doc == null){//表示XML文件不存在则新建此文件
doc = new Document(root);
}
else{
System.out.println("ko!");
root = doc.getRootElement();
}

Element dimension = new Element("dimension");//精度子element
//--------------属性值定义------------------//
//dimension Element 的属性值
String id = new String(String.valueOf(id_int));//尺寸序号值
String precision_type = new String(" ");//精度类型值
String tolerance_tag = new String(" ");//形位公差类型值
String prefixion = new String(" ");//表征主尺寸的前缀,如φ、R等
String dim_body = new String(" ");//主尺寸值
//偏差子Element属性值设置
String judge = new String(" ");
String upValue = new String("+0.05");
String downValue = new String("-0.05");
//基准子Element属性值设置
String num = new String("2");
String[] datum_tagValue = new String[Integer.parseInt(num)];
for(int j = 0;j<datum_tagValue.length;j++){
datum_tagValue[j] = new String("A");//有待进一步处理
}
////工艺信息子Element属性值设置
String faceid = new String(" ");
String operationid = new String(" ");
String name = new String(" ");

//---------------设置属性-----------------//
dimension.setAttribute("id",id);//尺寸序号
dimension.setAttribute("precision_type",precision_type);//表征精度类型
dimension.setAttribute("tolerance_tag",tolerance_tag);//表征形位公差类型
dimension.setAttribute("prefixion",prefixion);//表征主尺寸的前缀,如φ、R等
dimension.setAttribute("dim_body", dim_body);//表征主尺寸
//---------------设置子Element---------------//
//偏差子Element
Element deviation = new Element("deviation");//表征偏差对象
deviation.setAttribute("judge",judge);//表征有无偏差内容,0为无偏差项,1为有偏差
Element up = new Element("up");//表征上偏差
up.setText(upValue);
Element down = new Element("down");//表征下偏差
down.setText(downValue);
deviation.addContent(up);
deviation.addContent(down);
//基准子Element
Element datum = new Element("datum");//表征基准对象
datum.setAttribute("num",num);//表征基准数目
for(int j=0;j<datum_tagValue.length;j++){
Element datum_tag = new Element("datum_tag"); //根据上边的基准数目确定基准元素个数(可能有多个)
datum_tag.setText(datum_tagValue[j]);
datum.addContent(datum_tag);
}
//工艺信息子Element
Element processsinfo = new Element("processsinfo");//表征工艺信息引用情况,内容是使用该尺寸精度的工序信息
processsinfo.setAttribute("faceid",faceid);//该尺寸的所依附的面的id
Element usedoperation = new Element("usedoperation");//工序
usedoperation.setAttribute("operationid",operationid);//该工序的唯一标识id
usedoperation.setAttribute("name",name);//工序名称
processsinfo.addContent(usedoperation);

//在dimennsion Element 中添加子Element
dimension.addContent(deviation);
dimension.addContent(datum);
dimension.addContent(processsinfo);
//将精度Element添加到根Element中
root.addContent(dimension);

//-----------将数据写入文件---------------//
try {
fout= new FileOutputStream(fileName);
XMLOutputter serializer = new XMLOutputter(" ", true);
serializer.output(doc, fout);
fout.flush(); // Don't forget to flush!
fout.close();
}
catch (IOException e) {
System.err.println(e);
}
}

public static void main(String[] args) {
//测试
FibonacciJDOM test = new FibonacciJDOM();
test.writeXML("gdt_info.xml");
}

}

JavaBoyCaoJi 2003-08-21
  • 打赏
  • 举报
回复
大家踊跃发言哦

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧