xml工具类

/**
* 得到跟节点

* @param xmlPath
*            所读xml文件的位置
* @return 该xml文件的跟节点
* @throws IOException
* @throws JDOMException
*/
public static Element getXMLRoot(String xmlPath) throws IOException,
JDOMException {
builder = new SAXBuilder();
doc = null;
Element root = null;
try {
doc = builder.build(xmlPath);
root = doc.getRootElement();
} catch (JDOMException e) {
e.printStackTrace();
throw e;
} catch (IOException e) {
e.printStackTrace();
throw e;
}
return root;
}


/**
* @param filePath
*            companyInfo.xml路径
* @param updateJob
*            要修改内容的节点名称
* @param updateJobNewName
*            要修改成的内容

* @param type
*            做相应的修改 delete:删除 add:增加 update:修改
* @throws Exception
*             说明:3.2读取companyInfo.xml的内容,将公司总经理修改为zhangsan,

*/
public static void dealXml(String filePath, String updateJob,
String updateJobNewName, String type) throws Exception {
Element root = getXMLRoot(filePath);
researchXmlNode(root, updateJob, type, updateJobNewName);
saveXML(root, filePath);

}


/**
* 说明:遍历全部节点查找任意指定条件的节点 并根据信息作相应的修改

* @param node
*            查找的头节点
* @param searchStr
*            要查找的内容
* @param type
*            做相应的修改 delete:删除 add:增加 update:修改
* @param updateCon
*            需要更新的内容
*/
public static void researchXmlNode(Element node, String searchStr,
String type, String updateCon) {
// System.out.println(((Element)
// node.getChildren().get(0)).getAttributeValue("name").equals("zhangsan"));
String nodeName;
String nodeAttributeValue;
for (int i = 0; i < node.getChildren().size(); i++) {
nodeName = ((Element) node.getChildren().get(i)).getName();
nodeAttributeValue = ((Element) node.getChildren().get(i))
.getAttributeValue("name");
if (type.equals("update")) {
if (nodeName.equals(searchStr)) {// 修改节点
((Element) node.getChildren().get(i)).setAttribute("name",
updateCon);
}
} else if (type.equals("delete")) {// 删除节点
if (nodeAttributeValue.contains(searchStr)) {
((Element) node.getChildren().get(i)).removeContent();
System.out.println(nodeName + "已经被删除...");
}
} else if (type.equals("add")) {// 增加节点
if (nodeName.equals(searchStr)) {


}
}
researchXmlNode((Element) node.getChildren().get(i), searchStr,
type, updateCon);
}


}


/**
* 对修改后的xml文件进行保存

* @param root
*            修改后的
* @param filePath
*            保存路径
* @throws Exception
*/
public static void saveXML(Element root, String filePath) throws Exception {
FileOutputStream fos = new FileOutputStream(filePath);
doc.setRootElement(root);
try {
out.output(doc, fos);
} catch (FileNotFoundException e) {
e.printStackTrace();
throw e;
} catch (IOException e) {
e.printStackTrace();
throw e;
} finally {
if (fos != null) {
fos.close();
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值