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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了python应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值