XML 通用操作

Xml格式:

<?xml version="1.0" encoding="utf-8"?>

<remotes>

<remote ip="ipval">nameAndPwd</remote>

</remotes>

 

通用读写删类:

using System;

using System.Data;

using System.Web;

using System.Xml;

 

public class xml_oper

{

    private XmlDocument xmlDoc;

    public xml_oper() { }

    /// <summary>

    /// 加载xml文件

    /// </summary>

    /// <param name="path">xml文件的物理路径 </param>

    private void LoadXml(string path, string node_root)

    {

        xmlDoc = new XmlDocument();

        //判断xml文件是否存在

        if (!System.IO.File.Exists(path))

        {

            //创建xml 声明节点

            XmlNode xmlnode = xmlDoc.CreateNode(System.Xml.XmlNodeType.XmlDeclaration, "", "");

            //添加上述创建和 xml声明节点

            xmlDoc.AppendChild(xmlnode);

            //创建xml dbGuest 元素(根节点)

            XmlElement xmlelem = xmlDoc.CreateElement("", node_root, "");

            xmlDoc.AppendChild(xmlelem);

            try

            {

                xmlDoc.Save(path);

            }

            catch (Exception ex)

            {

                throw ex;

            }

            xmlDoc.Load(path);

        }

        else

        {

            //加载xml文件

            xmlDoc.Load(path);

        }

    }

 

    /// <summary>

    /// 添加xml子节点

    /// </summary>

    /// <param name="path">xml文件的物理路径 </param>

    /// <param name="node_root">根节点名称 </param>

    /// <param name="node_name">添加的子节点名称 </param>

    /// <param name="node_text">子节点文本 </param>

    public void addElement(string path, string node_root, string node_name, string node_text, string att_name, string att_value)

    {

        LoadXml(path, node_root);

 

        XmlNodeList nodeList = xmlDoc.SelectSingleNode(node_root).ChildNodes;//获取bookstore节点的所有子节点

        //判断是否有节点,有节点就遍历所有子节点,看看有没有重复节点,没节点就添加一个新节点

        if (nodeList.Count > 0)

        {

            foreach (XmlNode xn in nodeList)//遍历所有子节点

            {

                XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型

                if (xe.GetAttribute(att_name) != att_value)

                {

                    XmlNode xmldocSelect = xmlDoc.SelectSingleNode(node_root);  //选中根节点

                    XmlElement son_node = xmlDoc.CreateElement(node_name);    //添加子节点

                    son_node.SetAttribute(att_name, att_value);    //设置属性

                    son_node.InnerText = node_text;    //添加节点文本

                    xmldocSelect.AppendChild(son_node);      //添加子节点

                    xmlDoc.Save(path);          //保存xml文件

                    break;

                }

            }

 

        }

        else

        {

            XmlNode xmldocSelect = xmlDoc.SelectSingleNode(node_root);  //选中根节点

            XmlElement son_node = xmlDoc.CreateElement(node_name);    //添加子节点

            son_node.SetAttribute(att_name, att_value);    //设置属性

            son_node.InnerText = node_text;    //添加节点文本

            xmldocSelect.AppendChild(son_node);      //添加子节点

            xmlDoc.Save(path);          //保存xml文件

        }

    }

 

    /// <summary>

    /// 修改节点的内容

    /// </summary>

    /// <param name="path">xml文件的物理路径 </param>

    /// <param name="node_root">根节点名称 </param>

    /// <param name="new_text">节点的新内容 </param>

    /// <param name="att_name">节点的属性名 </param>

    /// <param name="att_value">节点的属性值 </param>

    public void UpdateElement(string path, string node_root, string new_text, string att_name, string att_value)

    {

        LoadXml(path, node_root);

        XmlNodeList nodeList = xmlDoc.SelectSingleNode(node_root).ChildNodes;//获取bookstore节点的所有子节点

        foreach (XmlNode xn in nodeList)//遍历所有子节点

        {

            XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型

            if (xe.GetAttribute(att_name) == att_value)

            {

                xe.InnerText = new_text;    //内容赋值

                xmlDoc.Save(path);//保存

                break;

            }

        }

 

    }

 

    /// <summary>

    /// 删除节点

    /// </summary>

    /// <param name="path">xml文件的物理路径 </param>

    /// <param name="node_root">根节点名称 </param>

    /// <param name="att_name">节点的属性名 </param>

    /// <param name="att_value">节点的属性值 </param>

    public void deleteNode(string path, string node_root, string att_name, string att_value)

    {

 

        LoadXml(path, node_root);

 

        XmlNodeList nodeList = xmlDoc.SelectSingleNode(node_root).ChildNodes;

        XmlNode root = xmlDoc.SelectSingleNode(node_root);

 

        foreach (XmlNode xn in nodeList)

        {

            XmlElement xe = (XmlElement)xn;

 

            if (xe.GetAttribute(att_name) == att_value)

            {

                //xe.RemoveAttribute("name");//删除name属性

                xe.RemoveAll();//删除该节点的全部内容

                root.RemoveChild(xe);

                xmlDoc.Save(path);//保存

                break;

            }

 

        }

    }

}

读取方法:

// 读取xml

XmlDocument doc = new XmlDocument();

doc.Load("DB.xml");

XmlNodeList nodes = doc.SelectSingleNode("remotes").ChildNodes;

foreach (XmlElement item in nodes)

{

    string ipval = item.Attributes["ip"].Value; // ipval

    string text = item.InnerText;               // nameAndPwd

}

【Stone 制作整理,引用请写明出处谢谢合作,联系QQ:1370569】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547723.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ansible无敌详细入门教程

Ansible 是什么 ? ansible架构图 ansible特性 模块化&#xff1a;调用特定的模块&#xff0c;完成特定的任务&#xff1b; 基于Python语言研发&#xff0c;由Paramiko, PyYAML和Jinja2三个核心库实现&#xff1b; 部署简单&#xff1a;agentless&#xff1b; 支持自定义模…

Nginx学习笔记(五) 源码分析内存模块内存对齐

Nginx源码分析&内存模块 今天总结了下C语言的内存分配问题&#xff0c;那么就看看Nginx的内存分配相关模型的具体实现。还有内存对齐的内容~~不懂的可以看看~~ src/os/unix/Ngx_alloc.h&Ngx_alloc.c 先上源码&#xff1a; /** Copyright (C) Igor Sysoev* Copyright (C…

reactor p java_Java反应式框架Reactor中的Mono和Flux

1. 前言最近写关于响应式编程的东西有点多&#xff0c;很多同学反映对Flux和Mono这两个Reactor中的概念有点懵逼。但是目前Java响应式编程中我们对这两个对象的接触又最多&#xff0c;诸如Spring WebFlux、RSocket、R2DBC。我开始也对这两个对象头疼&#xff0c;所以今天我们就…

Visual Studio 20xx试用版升级为正式版(WIN7同样有效)图解、附带序列号

Visual Studio 2005|2008 试用版升级为正式版&#xff08;WIN7同样有效&#xff09;。 目录 一、步骤图解 二、win7破解工具下载 三、序列号 一、步骤图解 1.控制面板 > 程序和功能 > Visual Studio 2005|2008 启动、修复程序。如图&#xff1a; 2.填写序列号&#xff0…

java方法调用的格式_Java基础(一)---方法的调用

接上一篇方法的自定义&#xff0c;此篇简介一下如何去调用一个方法。。。方法的主要目的&#xff1a;实现代码的复用1.方法调用的格式&#xff1a;  方法名(参数);注&#xff1a;如果方法需要参数(即所调用的方法的参数列表中存在参数)&#xff0c;此时必须给参数&#xff0c…

解决go build报错cannot find main module; see ‘go help modules‘

描述&#xff1a; 在学习golang的过程中&#xff0c;在$GOPATH/src/github.com/xxx/hello目录下执行go build和go test都会报下面的错误 go: cannot find main module; see ‘go help modules’ 解决方案&#xff1a; 由于之前设置过GO111MODULEon&#xff0c;所以使用下面…

NHibernate使用之详细图解

本文档适合初级开发者或者是第一次接触NHibernate框架的朋友&#xff0c;其中NHibernate不是最新的版本&#xff0c;但是一个比较经典的版本 NHibernate 2.1.2&#xff0c;其中用红线标注的部分一定要仔细看&#xff0c;这些都是容易忽略和出错的地方&#xff0c;笔者在此给大家…

disabling directory browsing

2019独角兽企业重金招聘Python工程师标准>>> I have seen several recommendation to increase web application security by disabling directory browsing (for example pg 388 in IBM WebSphere Deployment and Advanced Configuration by Barcia, Hines, et al)…

水印生成器第2版[原图质量水印可自定义设置]

简介&#xff1a;水印生成器&#xff0c;原理很简单&#xff0c;一时在网上没有找到打水印的网站&#xff0c;自己便做了一个&#xff0c;效果如下图&#xff0c;可自定义字体大小、字体类型以及颜色。 开发环境&#xff1a;vs 2010 [net 3.5 WindowsForms应用程序] 本文带给…

服务发现与负载均衡traefik ingress

ingress就是从kubernetes集群外访问集群的入口&#xff0c;将用户的URL请求转发到不同的service上。Ingress相当于nginx、apache等负载均衡方向代理服务器&#xff0c;其中还包括规则定义&#xff0c;即URL的路由信息&#xff0c;路由信息得的刷新由 Ingress controller 提供 …

python 控制手机摄像头_python+open cv调用手机摄像头,保存文件

import cv2cv2.namedWindow("camera", 1)# 开启ip摄像头video "http://admin:admin192.168.31.97:8081/" # 此处后的ipv4 地址需要改为app提供的地址cap cv2.VideoCapture(video)#  开摄像头# while True:# # Start Camera, while true, camera will r…

GentleNet使用之详细图解[语法使用增强版]

目录第一章 开发环境第二章 简介第三章 Gentle.Net-1.5.0 下载文件包介绍第四章 使用步骤第五章 源码下载 第一章、开发环境&#xff1a;Vs 2010 Sql 2005 GentleNet 1.5.0 【Web网站程序 .Net Framework 3.5】第二章、简介&#xff1a;Gentle.Net是一个开源的优秀O/R M…

JupyterHub on Kubernetes-Helm安装

JupyterHub on Kubernetes-Helm安装 本文编译自 https://zero-to-jupyterhub.readthedocs.io/en/latest/setup-jupyterhub.html本文地址&#xff0c;https://my.oschina.net/u/2306127/blog/1836933&#xff0c;by openthings, 2018.06.28.更多内容&#xff0c;参考 JupyterHu…

netbeans字体与颜色配置模板相关网站

NetBeans Themes -Color Schemes of the NetBeans IDE NetBeans ThemeBuilder

java word转pdf linux_Linux平台中使用PHP把word转pdf的实现方法

Linux平台中使用PHP把word转pdf的实现方法1、ubantu下安装libreofficesudo apt-get install libreoffice2、命令行执行word转pdf将 /home/wordToPdf/wordFiles/目录下的CAS.docx转成pdf存放到 /home/wordToPdf/pdfFiles 目录下&#xff1a;libreoffice --headless --convert-to…

NBear简介与使用图解

NBear简介与使用图解框架类型&#xff1a;ORM映射框架简介&#xff1a;NBear是一个基于.Net 2.0、C#2.0开放全部源代码的的软件开发框架类库。NBear的设计目标是尽最大努力减少开发人员的工作量&#xff0c;最大程度提升开发效率&#xff0c;同时兼顾性能及可伸缩性。Demo版本&…

搭建私有helm仓库及图形界面

搭建私有helm仓库及图形界面 本篇主要介绍私有 helm 仓库 Chartmuseum 及图形界面 Monocular UI /kubeapps 的搭建 helm chart 能够很好的封装和管理我们的 kubernetes 应用&#xff0c;可以实现中间件、数据库、公共组件等快速发布。 什么场景下我们需要构建一个私有的helm仓…

神啊,6小时30分钟,完成想要的所有Lync测试

神啊 !记住这个日子 !从未想到&#xff0c;6小时30分钟&#xff0c;能做出这么多东西&#xff1a;从&#xff1a;2013-06-28---20&#xff1a;00到2013-06-29-----2&#xff1a;30 (辛苦&#xff0c;也是值得&#xff0c;客户是上帝&#xff0c;公司也好&#xff0c;个人也罢&a…

SubSonic框架使用图解

简介&#xff1a;SubSonic框架是一个优秀的、开源的ORM映射框架&#xff0c;同时提供符合自身需要的代码生成器。 官方下载地址&#xff1a;http://www.subsonic.org/pages/download.jsp 明白了SubSonic是什么之后&#xff0c;下面一起来看SubSonic的使用吧。 开发版本&#…

java49_java培训 java49条基础知识

java培训这篇文章主要是给大家重新温习一下java的一些基础方面的知识&#xff0c;毕竟基础的知识得掌握牢固&#xff0c;俗话说万丈高楼平地起&#xff0c;基础一定得掌握好!1、Java中成员变量又分为实例成员变量 和类成员变量。2、写类的目的是为了描述一类事物共有的属性 和功…