操作xml文件类

第五章 Python-文件操作 网络自动化运维 阅读详情
 

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Data;
using System.IO;
using System.Collections;
using System.Windows.Forms;

namespace OperateXML
{
    /// <summary>
    /// 操作xml文件
    /// </summary>
    public class OperateXML
    {
        private static OperateXML operate = null;
        private static XmlDocument _xmlDoc = null;
        private static string _path = string.Empty;

        private OperateXML(string path)
        {
            _path = path;
            _xmlDoc = new XmlDocument();
            if (_path != string.Empty)
                _xmlDoc.Load(path);
        }
        /// <summary>
        /// path为空时 表示创建XMLFile
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public static OperateXML Instance(string path)
        {
            if (operate == null)
                operate = new OperateXML(path);
            return operate;
        }

        /// <summary>
        /// 初始化xml文件
        /// </summary>
        public static void GenerateXMLFile(string savePath,string rootName,DataTable dt,string childsName,string[] childs)
        {
            try
            {
                XmlNode xmlDeclaration = _xmlDoc.CreateNode(XmlNodeType.XmlDeclaration, "", "");
                _xmlDoc.AppendChild(xmlDeclaration);
                //根节点
                XmlElement rootElement = _xmlDoc.CreateElement(rootName);
                _xmlDoc.AppendChild(rootElement);
                foreach (DataRow dr in dt.Rows)
                {
                    XmlElement moduesElement = _xmlDoc.CreateElement(childsName);
                    rootElement.AppendChild(moduesElement);

                    GenerateXMLChildNode(moduesElement, childs, dr);
                }
                _xmlDoc.Save(savePath);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                if (File.Exists(savePath))
                    File.Delete(savePath);
            }
        }
        /// <summary>
        /// 追加子节点
        /// </summary>
        /// <param name="fElement"></param>
        /// <param name="childs"></param>
        /// <param name="dr"></param>
        public static void GenerateXMLChildNode(XmlElement fElement,string[] childs,DataRow dr)
        {
            foreach (string item in childs)
            {
                XmlElement childNode = _xmlDoc.CreateElement(item);
                childNode.InnerText = dr[item].ToString();
                fElement.AppendChild(childNode);
            }
        }

        public static void GenerateXMLChildNode(XmlElement fElement,Hashtable ht)
        {
            foreach (string item in ht.Keys)
            {
                XmlElement childNode = _xmlDoc.CreateElement(item);
                childNode.InnerText = ht[item].ToString();
                fElement.AppendChild(childNode);
            }
        }
        /// <summary>
        /// 插入一个节点,带一属性。
        /// </summary>
        /// <param name="fElement"></param>
        /// <param name="element"></param>
        /// <param name="attrib"></param>
        /// <param name="attribContent"></param>
        /// <param name="content"></param>
        public static void GenerateXMLChildNode(XmlElement fElement, string element, string attrib, string attribContent, string content)
        {
            XmlElement childNode = _xmlDoc.CreateElement(element);
            childNode.SetAttribute(attrib, attribContent);
            childNode.InnerText = content;
            fElement.AppendChild(childNode);
        }

        /// <summary>
        /// 获取节点集合
        /// </summary>
        /// <param name="xPath">/root/modues</param>
        /// <returns></returns>
        public static XmlNodeList Read(string xPath)
        {
            XmlNodeList returnNodeList = null;
            try
            {
                returnNodeList = _xmlDoc.SelectNodes(xPath);
            }
            catch { }
            return returnNodeList;
        }
        /// <summary>
        /// 获得datatable
        /// </summary>
        /// <param name="xPath"> /Employee/@id 或者 Company/Department/Department_Name | Company/Department/Manager</param>
        /// <returns></returns>
        public static DataTable ReadToDT(string xPath)
        {
            DataSet ds = new DataSet();
            try
            {
                StringReader read = new StringReader(_xmlDoc.SelectSingleNode(xPath).OuterXml);
                ds.ReadXml(read);
            }
            catch { }
            return ds.Tables[0];
        }
        /// <summary>
        /// 根据子节点值获取此节点
        /// </summary>
        /// <param name="fNode"></param>
        /// <param name="xPath"> "modues/fid[text()='" + findValue + "']" 或者 Deparmt_Name/text()</param>
        /// <returns></returns>
        public static XmlNode ReadByText(XmlNode fNode,string xPath)
        {
            XmlNode returnnode = null;
            try
            {
                returnnode = _xmlDoc.SelectSingleNode(xPath);
            }
            catch { }
            return returnnode;
        }
        /// <summary>
        /// 根据节点属性值获取节点
        /// </summary>
        /// <param name="fNode"></param>
        /// <param name="xPath"> Book/Authors[ISBN=\"0002\"] 或者 Employee/@id='22345']/Department_Name</param>
        /// <returns></returns>
        public static XmlNode ReadByAttribute(XmlNode fNode, string xPath)
        {
            XmlNode returnnode = null;
            try
            {
                returnnode = _xmlDoc.SelectSingleNode(xPath).ParentNode;
            }
            catch { }
            return returnnode;
        }
        /// <summary>
        /// 修改节点值
        /// </summary>
        /// <param name="xPath">Name[text()='Zhang Qi'] </param>
        /// <param name="value"></param>
        public static void UpdateNode(string xPath, string value)
        {
            _xmlDoc.SelectSingleNode(xPath).InnerText = value;
        }
        /// <summary>
        /// 删除节点
        /// </summary>
        /// <param name="xPath">Employee[@id='10102']</param>
        public static void DeleteNode(string xPath)
        {
            string mainPath = xPath.Substring(0, xPath.LastIndexOf("/"));
            _xmlDoc.SelectSingleNode(mainPath).RemoveChild(_xmlDoc.SelectSingleNode(xPath));
        }
    }
}

Python APP反爬实战:Frida+Charles抓包,破解签名校验 Charles抓包定位参数 → jadx-gui反编译找函数 → Frida Hook拿密钥/规则 → Python还原签名算法;Frida的核心价值:Hook住APP的加密函数,拿到“输入(密钥/参数)+输出(签名)”,无需懂复杂的逆向底层;严格对齐APP的参数排序、拼接规则、加密算法,差一点都会验证失败。 阅读详情

相关推荐

Origin绘制带差异显著性标记的分组均值条形图|科研论文图表教程(附数据格式模板)

传统柱状图虽能呈现组间均值差异,却隐藏个体数据分布;散点图虽能展示原始数据,却难以直观凸显统计显著性。带差异显著性(*)的分组均值条形图——它以“双层叙事”的创新设计,同时呈现群体特征与个体差异。

weixin_50236590的博客 1493

C# XML文件的读写操作

C# XML文件的读写操作 XML(可扩展标记语言) 定义:用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 一、创建xml文件 private void Creat() { XmlTextWriter writer = new XmlTextWriter("xmlTest.xml", System.Text.Encoding.UTF8); //使用自动缩进便于阅读

韬光养晦 1万+

详解从无人机倾斜实景三维建模→模型修复→成果网络发布展示分享全流程

1、倾斜实景三维建模软件:CC(Smart3D)软件2、实景三维模型网页在线发布展示、分享平台:图新地球网页端(Wish3D·Earth平台)图新地球网页端(Wish3D·Earth平台)是基于 WebGL技术研发的国产实景三维模型Web端发布展示平台,可实现TB级倾斜实景三维数据快速加载,支持多种格式的三维模型,如OSGB实景模型、OBJ人工模型、SKP人工模型、RVT格式BIM模型等,同时支持模型单体化、三维模型测量分析、水面特效、日照分析等特殊效果呈现,此外也可以根据您的需要进行本地化部署级功能定制。

GISWorld3D的博客 4376

任意PC键盘映射到MAC键盘的karabiner配置xml文件

有没有朋友像我一样,找了很久适合于macbook pro的机械键盘呢?市面上仅有的几款,要么就是Matias的白轴,手感很差,要么DAS的青轴,小贵,声音大。 最后我发现了karabiner [url]https://pqrs.org/osx/karabiner/index.html.en[/url]这个神器软件,购入了樱桃的G80-3000白色茶轴机械键盘,研究了一番,实现了完美的苹果键位...

1592

使用Dify打造视频生成工作流:从提示词到视频的完整指南

Dify作为开源LLM应用开发平台,通过可视化工作流编排实现从文本到视频的端到端生成,将创意周期从天级缩短至分钟级。核心流程包括提示词工程、视频API调用、存储分发和结果反馈。

牛奶夹心巧克力 3435

MaxEnt软件的下载与安装

1、下载网站:http://lucky-boy.ys168.com/ (这是之前在网上搜到的,里面有许多软件安装包,感谢网页主的资源共享,违权必删)

weixin_42191203的博客 2万+

dom4j 解析元素无属性和有属性的xml文件,都使用反射进行注值

dom4j 是将DOM解析和SAX解析的优点结合的一个优秀的产品. dom解析 优点:因为在内存中形成dom树,可以对dom树进行增删改查 缺点:因为在内存中形成dom树,占用内存大,不适合大文件 sax解析 省内存,但只能读取,不能修改 由于写入xml比较简单,且不常用,所以我只做了解析的,相关包的导入已省略,需要导入dom4的jar包。 一.无属性的xml文件

qq_33491863的博客 839

双参数威布尔分布(Weibull分布)参数计算(根据故障数据,求双参数威布尔分布的参数详细步骤)

根据故障数据求威布尔分布参数步骤 根据众多文献研究,设备故障数据大多服从指数分布、威布尔分布或对数正态分布。其中威布尔分布较为常用,本文主要介绍威布尔分布的简单应用,并根据某设备故障数据为例简单介绍威布尔分布参数的计算方法。 参考文献11参考文献22 1.双参数威布尔分布的概率密度函数、概率分布函数、可靠度函数: 2.预处理故障数据 将故障数据按时间排序,假设设备分别在以下时间点失效:11.1 、23.5、58.4……则将此时间从小到大排序。并计算中位秩。中位秩的计算公式如下: 其中i表示第几个数据,n

biaochengxiaobai的博客 4万+

xml文件转化为对象

&lt;?xml version="1.0" encoding="utf-8" ?&gt; &lt;Data&gt; &lt;Row&gt; &lt;MyDataSource&gt; &lt;driverClassName&gt;&lt;/driverClassName&gt; &lt;url&

IT_private的博客 1967

uniapp APP端:蓝牙报错writeBLECharacteristicValue:fail property not support(uni.writeBLECharacteristicVal)

uni-app 蓝牙fail property not support、发现不了服务特征值的问题、突然发现微信蓝牙小秘密,使用uni-app编译成安卓APP后报错writeBLECharacteristicValue:fail property not support,发现不了服务特征值,uniApp APP调用蓝牙API发送指令过快导致,uniapp 蓝牙 writeBLECharacteristicValue property_not_support iOS Android BLE GATT 特征值写入

✅ 精选推荐文章 2943

Java炫酷烟花③(完整代码)

Java语言实现炫酷烟花动画的完整代码。 下载代码 下载链接:我是一只有趣的兔子,感谢你的喜欢。

AIGC 784

XML解析的三种方式

参考:http://blog.youkuaiyun.com/liuhe688/article/details/6415593 首先定义一个接口 package com.lei.xml; import java.io.InputStream; import java.util.List; public interface XMLParser { // 解析xml List xmlParse

lei的博客 5462

对角两对双差速轮AGV的平移、直行、转弯和原地旋转之PID控制

本示例将展示如何使用PID控制算法,控制具有对角线布置的两对双差速轮(左前和右后)的AGV,实现平移、直行、转弯和原地旋转等运动。通过对车辆的运动学和PID控制器的设计,我们可以精确地控制AGV的运动

xiaoc100200的博客 1510

c#操作xml文件类

class CaoZuoXml { XmlDocument xmlDoc = null; String xmlPath = ""; public CaoZuoXml(String xmlPath)//文件所在路径(Directory.GetCurrentDirectory() + @"\data.xml") { ...

高帅的博客 275

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

IDEA2021版本resources目录下的xml后缀文件为灰色

选中文件,右键,重写文件类型,选择xml文件即可。

m0_51312071的博客 333

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

我写的一个xml文件类,封装了 IXMLDocument(c++builder).

/*    这是我写的一个xml文件类,封装了 IXMLDocument,用于在c++builder程序中    建立、读写xml文件,经过一年多的修改和使用,感觉还行。作者:lao-hong  *///下面是"my_xml.h"的内容:    (用到了STL)//-----------------------------------------------------------------

hong_qi的专栏 4515

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

国产编辑器EverEdit - “切换文件类型”的使用场景

本文介绍EverEdit的“切换文件类型”的使用,正确的文件类型可以让语法高亮正确显示

tyysoft的专栏 607

pythonxml库_Python XML操作

XML(可扩展性标记语言)是一种非常常用的文件类型,主要用于存储和传输数据。在编程中,对XML的操作也非常常见。本文根据python库文档中的xml.etree.ElementTree类来进行介绍XML的解析:https://docs.python.org/3.5/library/xml.etree.elementtree.htmlBTW,xml.etree.cElementTree模块从3.3以...

weixin_39587238的博客 182

Python之文件操作

文章目录一、文件类型1、文本文件2、二进制文件二、文件操作模式三、文件操作方式1、读2、写2.1、覆盖写(清空写)2.2、追加写3、读写 一、文件类型 此处对文件进行分类是基于编码层次,主要分为:文本文件和二进制文件 1、文本文件 文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。 打开肉眼就能识别内容,可读性强 2、二进制文件 二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思。 用txt打开显示鬼码,可读性差 二、文件操作模式 一般我们对文件进行操作,

luoluoxx0115的博客 762

C# 文件操作 通用接口(Ini,Xml,Json)

C# 文件操作简介一、IFileBase接口二、FileHelper文件操作类三、不同类型文件操作接口实现1.INI文件2.XML文件2.Json文件总结 简介 大致思路: 1.定义一个IFileBase接口,提供文件基本操作,各个文件操作基于它来实现接口。 2.定义FileHelper类,类中定义一个接口变量 IFileBase file用于不同文件操作 3.不同文件类:XMLHalper,INIHalper,JsonHalper实现IFileBase接口对不同文件进行操作 一、IFileBase

qq_39793629的博客 834

Error loading XML document: dwz.frag.xml

转自:http://blog.youkuaiyun.com/wy542107493/article/details/7641064 Error loading XML document: dwz.frag.xml 直接用IE打开index.html弹出一个对话框:Error loading XML document: dwz.frag.xml 原因:dwz.frag.xml是一个核心文件,需要加载才

1万+

linux 输出当前文件夹下以.xml结尾的文件

让, 668

Mybatis X插件无法识别xml文件

Mybatis X插件无法识别xml文件

ThinkStu的博客 9234

一次性解决单一.xml文件不被识别问题,详细教程

解决.xml不被识别,超详细教程

Accesshuohuo的博客 1324

文件系统(02):基于SpringBoot框架,管理Xml和CSV文件类型

一、文档类型简介 1、XML文档 XML是可扩展标记语言,是一种用于标记电子文件使其具有结构性的标记语言。标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如数据结构,格式等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。适合网络传输,提供统一的方法来描述和交换应用程序的结构化数据。 2、CSV文档 CSV文档,以逗号分隔文档内容值,其文件以纯文本形式存储结构数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段

weixin_51393513的博客 272

win10如何设置文件的默认打开方式

1. 打开默认应用 2. 按文件类型指定默认应用 3 选择文件以及其默认打开应用,这里举例.xml文件

qq_43494013的博客 2921
上一篇: 树节点创建
下一篇: C# WinForm技巧“将Form嵌入到Panel”
andycode
博客等级 码龄17年 12粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值