JDOM 解析 XML文件

[size=medium][b]JDOM 读取 解析 修改 删除 XML文件[/b][/size]

加入
D:\Soft\jar\jdom.jar



package com.itheima.xml;

import java.io.File;
import java.io.FileWriter;
import java.util.Iterator;
import java.util.List;

import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;

public class TextJDOMparseXML {//操作使用JDOM解析XML文件的类

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String fileName="F:/test1.xml";
TextJDOMparseXML jdomXml=new TextJDOMparseXML();
System.out.println("===============1.运用jdom创建XML文件");
if(jdomXml.createXMLFile(fileName, "GB2312")==1)
System.out.println("运用JDOM创建XML文件成功!");
else
System.out.println("运用JDOM创建XML文件失败!");
System.out.println("===============2.运用JDOM读取XML文件");
jdomXml.read(jdomXml.getDocument(fileName));
System.out.println("===============3.修改XML内容,输出修改后的文档");
jdomXml.update(fileName, "rongshu", "liushu");
System.out.println("===============4.删除编号为002的节点,输出修改后的文件");
jdomXml.delete(fileName, "002");

}

//生成一个新的Document
public Document createDocument(){
Document document=new Document();
return document;
}
//创建一个节点
public Element createElement(String paramName,String paramValue){
Element element=new Element(paramName);
element.setText(formatTextForXML(paramValue));
return element;
}
//创建 XML文件
public int createXMLFile(String fileName,String encoding){
int returnValue=0;
Document document=createDocument();
Element treesElement=createElement("trees", null);
Element treeElement=new Element("tree");
treeElement.setAttribute("id","001");
treeElement.setAttribute("name","rongshu");

Element typeElement=new Element("type");
typeElement.setText("style");
typeElement.setAttribute("id","xiaoshu");
treeElement.addContent(typeElement); //添加 子节点


Element descElement=new Element("description");
descElement.setText(formatTextForXML("It is a big tree"));
treeElement.addContent(descElement);

treesElement.addContent(treeElement);

Element tree1Element=new Element("tree");
tree1Element.setAttribute("id","002");
tree1Element.setAttribute("name","yangshu");
Element type1Element=new Element("type");
type1Element.setText("style");
type1Element.setAttribute("id","dashu");
tree1Element.addContent(type1Element);
Element desc1Element=new Element("description");
desc1Element.setText(formatTextForXML("The tree grows taller from day to day"));
tree1Element.addContent(desc1Element);
treesElement.addContent(tree1Element);


Element tree2Element=new Element("tree");
tree2Element.setAttribute("id","003");
tree2Element.setAttribute("name","songshu");
Element desc2Element=new Element("description");
desc2Element.setText(formatTextForXML("The tree is very beautiful"));
tree2Element.addContent(desc2Element);
treesElement.addContent(tree2Element);

Element flowerElement=new Element("flower");
flowerElement.setText("rose");
treesElement.addContent(flowerElement);

document.addContent(treesElement);
try {
saveFile(fileName,document,encoding);
returnValue=1;
} catch (Exception e) {
// TODO: handle exception
System.out.println("创建XML文件失败:"+e.getMessage());
}
return returnValue;

}
//读取xml
public void read(Document document){
try {
Format format=Format.getPrettyFormat();
format.setEncoding("GB2312");

XMLOutputter xmlOutputter=new XMLOutputter(format);
xmlOutputter.output(document, System.out);
} catch (Exception e) {
System.out.println("读取XML文件失败:"+e.getMessage());
}
}
//修改 xml文档节点
public int update(String fileName,String oldName,String newName){
int returnValue=0;
Document document=getDocument(fileName);
List list=document.getRootElement().getChildren();
for (int i = 0; i < list.size(); i++) {
Element element=(Element)list.get(i);
Attribute attribute=element.getAttribute("name");
if(attribute!=null){
if(attribute.getValue().equals(oldName)){
attribute.setValue(newName);
}
}
}

list=document.getRootElement().getChildren("flower");
Iterator iter=list.iterator();
if(iter.hasNext()){
Element el=(Element)iter.next();
el.setText("lily");
Element date=new Element("date");
date.setText("2009-04-10");
date.setAttribute("type","calendar");
el.addContent(date);
}

try {
showFile(fileName,document);
returnValue=1;
} catch (Exception e) {
// TODO: handle exception
System.out.println("修改XML文件出错:"+e.getMessage());
}

return returnValue;


}
//删除XML 节点
public boolean delete(String fileName,String id){
boolean returnVlalue=false;
Document doc=getDocument(fileName);
Element root=doc.getRootElement();
List list=root.getChildren("tree");
for (int i = 0; i < list.size(); i++) {
Element element=(Element)list.get(i);
if (element.getAttribute("id").getValue().equals(id)) {
root.removeContent(element);
}
}
try {
showFile(fileName, doc);
returnVlalue=true;
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return returnVlalue;

}

private void showFile(String fileName, Document document) {
// TODO Auto-generated method stub
Format format=Format.getPrettyFormat();
format.setEncoding("GB2312");
format.setIndent(" ");
try {
XMLOutputter xmlOutputter=new XMLOutputter(format);
FileWriter fileWriter=new FileWriter(fileName);
xmlOutputter.output(document, fileWriter);
xmlOutputter.output(document, System.out);
} catch (Exception e) {
System.out.println("XML文件输出到控制台出错:"+e.getMessage());
}
}

private Document getDocument(String fileName) {
// TODO Auto-generated method stub
Document document=null;
try {
SAXBuilder saxBuilder=new SAXBuilder();
document=saxBuilder.build(new File(fileName));
} catch (Exception e) {
// TODO: handle exception
System.out.println("载入失败:"+e.getMessage());
return null;
}
return document;
}

private boolean saveFile(String fileName, Document document, String encoding) {
// TODO Auto-generated method stub
Format format=Format.getPrettyFormat();
if(encoding!=null){
format.setEncoding(encoding);
}
format.setIndent(" "); //设置xml文件的缩进
try {
XMLOutputter xmlOutputter=new XMLOutputter(format);
FileWriter fileWriter=new FileWriter(fileName);
xmlOutputter.output(document, fileWriter);
} catch (Exception e) {
System.out.println("保存文件出错:"+e.getMessage());
return false;
}
return true;
}

private String formatTextForXML(String sourceString) {
// TODO Auto-generated method stub
if (sourceString==null) {
return null;
}
int stLen=0;
StringBuffer reString= new StringBuffer();
String deString="";
stLen=sourceString.length();
for (int i = 0; i < stLen; i++) {
char ch=sourceString.charAt(i);
switch (ch) {
case '<':
deString="<";
break;
case '>':
deString=">";
break;
case '\"':
deString="\"";
break;
case '&':
deString="&";
break;
case 13:
deString="\n";
break;
default:
deString=""+ch;
break;
}
reString.append(deString);
}
return reString.toString();
}


}

### 如何获取 DeepSeek 免费 Token 对于希望获取 DeepSeek 免费 Token 的用户来说,存在多个途径来实现这一目标。 当前有特定时间段内的优惠活动可供利用。例如,在注册 DeepSeek 账户时,新用户可以获得价值10元人民币的免费 Token,这大约等于一千万元的 Token 数量[^1]。此外,针对接入 DeepSeek V3 版本的服务,也有过提供五百万元 Token 的限时优惠直至指定日期结束的通知[^2]。而更进一步地,某些情况下服务商为了表达对客户的感激之情以及促进未来的合作关系,会在一定期限内给予更高额度如五亿 Tokens免费使用权[^4]。 需要注意的是这些优惠政策可能会随时间变化,并且具体条款可能有所调整。因此建议访问官方渠道确认最新的促销信息并按照指引完成相应操作以获得免费资源。 #### 获取步骤概述 虽然这里不使用诸如“首先”这样的引导词,但以下是概括性的描述: - 访问官方网站或应用平台创建账户; - 阅读并同意服务协议及相关政策说明; - 完成身份验证流程(如果必要); - 查看可用的奖励计划详情页了解最新福利措施; - 根据页面提示领取相应的免费 Token 或参与其他形式的激励项目; ```python # 示例代码用于展示如何通过API请求获取Token(假设场景),实际操作需参照官方文档指导。 import requests def get_free_token(api_url, user_info): response = requests.post(api_url, json=user_info) if response.status_code == 200: token_data = response.json() print(f"成功获取到 {token_data['amount']} tokens.") else: print("未能成功获取Token.") user_details = {"email": "example@example.com", "password": "securePassword"} get_free_token("https://api.deepseek.example/token/free", user_details) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值