xml 查看删除增加修改

import java.io.File;


import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;


import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;


public class paseXml {


private static final String NAME = "name";
private static final String ERROR_COUNT = "errorCount";
private static final String PASSWORD = "password";
private static final String USER = "user";


public static void main(String[] args) {
String filePath = "D:\\software\\eclipse\\userInfo.xml";
readXmlUserInfo(filePath);
queryUserInfo(filePath, "admin");
updateUserInfo(filePath, "admin", PASSWORD, "Test1234");
updateUserInfo(filePath, "admin", ERROR_COUNT, "1");
addUserInfo(filePath, "system", "System", 0);
deleteUserInfo(filePath, "system");
}


private static boolean queryUserInfo(String filePath, String userName) {
Document document = loadInit(filePath);
NodeList nodeList = document.getElementsByTagName(USER);
for (int i = 0; i < nodeList.getLength(); i++) {
Element user = (Element) nodeList.item(i);
String name = (String) user.getAttribute(NAME);
if (userName.equals(name)) {
return true;
}
}
return false;
}


public static void deleteUserInfo(String filePath, String userName) {
Document document = loadInit(filePath);
NodeList nodeList = document.getElementsByTagName(USER);
for (int i = 0; i < nodeList.getLength(); i++) {
Element user = (Element) nodeList.item(i);
String name = (String) user.getAttribute(NAME);
if (userName.equals(name)) {
user.getParentNode().removeChild(nodeList.item(i));
saveXML(document, filePath);
}
}
}


/**
* 添加XML文件

* @param filePath
* @param username
* @param password
* @param count
*/
public static void addUserInfo(String filePath, String username,
String password, int count) {
Document document = loadInit(filePath);
Element userElement = document.createElement(USER);
Element pwdElement = document.createElement(PASSWORD);
Element countElement = document.createElement(ERROR_COUNT);
Text pwdtext = document.createTextNode(password);
Text counttext = document.createTextNode(String.valueOf(count));


pwdElement.appendChild(pwdtext);
countElement.appendChild(counttext);


userElement.setAttribute(NAME, username);
userElement.appendChild(pwdElement);
userElement.appendChild(countElement);


Element documentElement = document.getDocumentElement();
documentElement.appendChild(userElement);
saveXML(document, filePath);
}


/**
* 修改Xml文件
*/
public static void updateUserInfo(String filePath, String username,
String attrName, String value) {
Document document = loadInit(filePath);


NodeList nodeList = document.getElementsByTagName(USER);
for (int i = 0; i < nodeList.getLength(); i++) {
Element user = (Element) nodeList.item(i);
String name = (String) user.getAttribute(NAME);
if (username.equals(name)) {
user.getElementsByTagName(attrName).item(0).setTextContent(
value);
}
}
saveXML(document, filePath);
}


/**
* 读xml文件

* @param filePath
*/
public static void readXmlUserInfo(String filePath) {
Document document = loadInit(filePath);


NodeList nodeList = document.getElementsByTagName(USER);
for (int i = 0; i < nodeList.getLength(); i++) {
Element user = (Element) nodeList.item(i);
String userName = (String) user.getAttribute(NAME);
String password = (String) user.getElementsByTagName(PASSWORD)
.item(0).getTextContent();
String errorCount = (String) user.getElementsByTagName(ERROR_COUNT)
.item(0).getTextContent();


UserInfo userinfo = new UserInfo();
userinfo.setCount(Integer.valueOf(errorCount));
userinfo.setUsername(userName);
userinfo.setPassword(password);


System.out.println(userinfo.toString());
}
}


public static boolean saveXML(Document document, String filePath) {
try {
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();


DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(new File(filePath));
transformer.setOutputProperty(OutputKeys.INDENT, "yes");// 增加换行缩进,但此时缩进默认为0
transformer.setOutputProperty(
"{http://xml.apache.org/xslt}indent-amount", "2");// 设置缩进为2
transformer.transform(source, result);
return true;
} catch (Exception e) {
return false;
}
}


public static Document loadInit(String filePath) {
Document document = null;
try {
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
document = builder.parse(new File(filePath));
document.normalize();
return document;
} catch (Exception e) {
return null;
}
}

}


<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<userInfo>
<user name="admin">
<password>1234</password>
<errorCount>1</errorCount>
  </user>


</userInfo>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值