/**
* 得到跟节点
*
* @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();
}
}
}
* 得到跟节点
*
* @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();
}
}
}