XmlDocument操作
一、基本操作:XmlDocument 写
class Program
{
static void Main(string[] args)
{
// 使用DOM操作,常用的类:XmlDocument、XmlElement、XmlAttribute和XmlText // 1.使用XmlDocument创建文档对象
XmlDocument xdoc = new XmlDocument(); // 2.创建文档描述
XmlDeclaration xdecl = xdoc.CreateXmlDeclaration("1.0", "utf-8", null);
xdoc.AppendChild(xdecl); // 使用父节点.AppendChild(子节点) // 3.创建根节点
XmlElement xRoot = xdoc.CreateElement("personCollection");
xdoc.AppendChild(xRoot); // 4.创建person
XmlElement person = xdoc.CreateElement("person");
xRoot.AppendChild(person); // 5.追加id属性
//XmlAttribute xid = xdoc.CreateAttribute("id");
//xid.Value = "001";
//person.SetAttributeNode(xid);
person.SetAttribute("id", ""); // 6.在person下面追加name、age和sex
XmlElement name = xdoc.CreateElement("name");
person.AppendChild(name);
XmlElement age = xdoc.CreateElement("age");
person.AppendChild(age);
XmlElement sex = xdoc.CreateElement("sex");
person.AppendChild(sex); // 7.给name、age和sex等元素追加数据
XmlText xname = xdoc.CreateTextNode("admin");
name.AppendChild(xname);
XmlText xage = xdoc.CreateTextNode("");
age.AppendChild(xage);
XmlText xsex = xdoc.CreateTextNode("男");
sex.AppendChild(xsex);
// 保存文档
xdoc.Save("XmlDocumentDemo.xml");
}
}
二、示例:
Users.xml文件:
<Users>
<User>admin</User>
<User>test</User>
<User>emplorer</User>
</Users>
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml; namespace ConsoleApplication1
{
public class UserHelper
{
public static string BASEPATH = AppDomain.CurrentDomain.BaseDirectory + @"Users"; /// <summary>
/// 所有的登录用户列表添加根节点
/// </summary>
public static void InitLoginUsers()
{
string userspath = BASEPATH + @"\All Users\Users.xml";
if (!File.Exists(userspath))
{
string allUserFolderPath = BASEPATH + @"\All Users";
Directory.CreateDirectory(allUserFolderPath);
FileStream fs = File.Create(userspath);
fs.Close();
}
// 1.使用XmlDocument创建文档对象
XmlDocument xmlDoc = new XmlDocument();
// 2.创建文档描述
//XmlDeclaration xxmlDecl = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null);
//xmlDoc.AppendChild(xxmlDecl); // 使用父节点.AppendChild(子节点)
XmlElement root = GetElement(xmlDoc, "Users");
root.InnerText = "";
xmlDoc.AppendChild(root);
// 保存文档
xmlDoc.Save(userspath);
} /// <summary>
/// 判断节点是否存在(用于Users列表)
/// 不存在 是就返回创建的一个新节点
/// 存在 返回相应的节点
/// </summary>
/// <param name="xmlDoc"></param>
/// <param name="node"></param>
/// <returns></returns>
private static XmlElement GetElement(XmlDocument xmlDoc, string node)
{
XmlElement xmlElement = null;
if (xmlDoc.SelectSingleNode(node) == null)
{
xmlElement = xmlDoc.CreateElement(node);
xmlElement.InnerText = "";
xmlDoc.AppendChild(xmlElement); // 创建根节点
//xml.DocumentElement.AppendChild(xmlElement); // 在根节点下添加子节点
}
else
{
xmlElement = (XmlElement)xmlDoc.SelectSingleNode(node);
}
return xmlElement;
} /// <summary>
/// 用户列表 添加一个新用户
/// </summary>
/// <param name="loginName"></param>
public static void AddNewUser(string loginName)
{
string userspath = BASEPATH + @"\All Users\Users.xml";
XmlDocument xmlDoc = new XmlDocument(); //建立XmlDomcument对象
xmlDoc.Load(userspath);
XmlNode root = GetElement(xmlDoc, "Users"); // 创建User
XmlElement user = xmlDoc.CreateElement("User");
user.InnerText = loginName;
root.AppendChild(user);
// 保存文档
xmlDoc.Save(userspath);
} /// <summary>
/// 删除一个用户
/// </summary>
/// <param name="loginname"></param>
public static void DeleteUserByName(string loginname)
{
string userspath = BASEPATH + @"\All Users\Users.xml";
XmlDocument xmlDoc = new XmlDocument(); //建立XmlDomcument对象
xmlDoc.Load(userspath);
XmlNode root = GetElement(xmlDoc, "Users");
XmlNodeList xList = root.SelectNodes("User"); foreach (XmlNode xNode in xList)
{
if (xNode.InnerText.Equals(loginname))
{
xNode.ParentNode.RemoveChild(xNode);
}
}
xmlDoc.Save(userspath);
} /// <summary>
/// 获取所有的用户信息
/// </summary>
/// <returns></returns>
public static List<string> SelectAllUsers()
{
List<string> listUsers = new List<string>(); string userinfopath = BASEPATH + @"\All Users\Users.xml";
if (File.Exists(userinfopath))
{
XmlDocument xmlDoc = new XmlDocument(); if (!CheckFile(userinfopath, ))
InitLoginUsers();
xmlDoc.Load(userinfopath); XmlNode root = GetElement(xmlDoc, "Users");
if (root != null)
{
XmlNodeList xList = root.SelectNodes("User"); foreach (XmlNode xNode in xList)
{
listUsers.Add(xNode.ChildNodes.Item().InnerText);
}
}
xmlDoc.Save(userinfopath);
}
return listUsers;
} /// <summary>
/// 检验文件是否是初始化的
/// </summary>
/// <param name="filePath">文件路径</param>
/// <param name="type">1是个人信息,0是用户列表</param>
/// <returns>合法是TRUE,非法是FALSE</returns>
public static bool CheckFile(string filePath, int type)
{
using (StreamReader sr = new StreamReader(filePath))
{
string str = sr.ReadToEnd().Trim(); if (type == )
{
if (str.StartsWith("<PersonalConfig>") && str.Length > && str.EndsWith("</PersonalConfig>"))
{
return true;
}
}
else if (type == )
{
if (str.StartsWith("<Users>") && str.Length > && str.EndsWith("</Users>"))
{
return true;
}
}
} return false;
}
}
}
XmlDocument操作的更多相关文章
- 传统XmlDocument操作
需要引用的命名空间: using System.Xml; 常用的类:XmlDocument.XmlElement.XmlNode.XmlNodeList 一.使用XmlDocument创建xml // ...
- C# XmlDocument操作XML
XML:Extensible Markup Language(可扩展标记语言)的缩写,是用来定义其它语言的一种元语言,其前身是SGML(Standard Generalized Markup Lang ...
- 利用XmlDocument操作XML文件
利用XmlDocument可以方便的操作XML文件. .操作XML文件基本方法 ()添加对System.Xml的引用,并使用using语句添加引用: ()假设要读取的XML文件如下: <?xml ...
- 那点你不知道的XHtml(Xml+Html)语法知识(DTD、XSD)
什么是XHtml: 摘录网上的一句话,XHTML就是一个扮演着类似HTML的角色的XML. XHtml可当模板引擎应用: CYQ.Data 框架里有一套XHtmlAction模板引擎, 应用在QBlo ...
- C# 读取大型Xml文件
这篇博客将介绍在C#中如何读取数据量很大的Xml文件.请看下面的Xml文件, <?xml version="1.0" encoding="utf-8"?& ...
- XHtml(Xml+Html)语法知识(DTD、XSD)
那点你不知道的XHtml(Xml+Html)语法知识(DTD.XSD) 什么是XHtml: 摘录网上的一句话,XHTML就是一个扮演着类似HTML的角色的XML. XHtml可当模板引擎应用: CYQ ...
- C# XML入门
什么是XML? XML:可扩展标记语言. XML的作用: 纯文本,兼容性强. 和HTML的区别: xml: 主要用来处理.存储数据.无规定标签,可扩展. html:对数据的显示和描述. 语法标签固定. ...
- 读写XML文档时,去掉新增加节点的“空命名空间”(xmlns=””)
在做对ReprotViewer编程时,想做一个用户可以更改显示/打印列的功能,大致看了下,只需要通过对rdlc文件中改变其<Hidden>节点值为false/true,即可实现对应某列的显 ...
- C#调用带返回值的存储过程
()在SQL Server中建立如下的存储过程: set ANSI_NULLS ON set QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[GetNa ...
随机推荐
- JavaScript学习(七)
- vscode 使用iView时标签报错 Parsing error: x-invalid-end-tag
错误展示: 问题原因: iView将标签渲染为原生html标签时,由于这些标签是自闭合的,所以有end标签会报错. 解决方案: 修改配置文件,忽略该项检查: 根目录下 - .eslintrc.js - ...
- php 7 新特性整理小结
php 7 比php 5 性能提升了很多,php 7 新特性主要表现在:1.变量存储字节减小,减少内存占用,提升变量操作速度:2.改善数组结构,数组元素和hash映射表被分配在同一块内存里,降低了内存 ...
- Windows系统重装工具 WinToHDD Enterprise v2.8 企业破解版
WinToHDD 是一款实用的 Windows 系统硬盘安装工具,有点类似于NT6 HDD Installer,它能不依靠光驱和U盘,让你直接通过本机硬盘来新装.重装和克隆 Windows 系统,支持 ...
- drf频率组件
1.简介 控制访问频率的组件 2.使用 手写一个自定义频率组件 import time #频率限制 #自定义频率组件,return True则可以访问,return False则不能访问 class ...
- SAP 从数据库中查询数据,带有where 条件。
数据库表 代码 *& Report ZSELECT_DATA_FROM_ZMAST_CUST *&------------------------------------------- ...
- [py][mx]django的cookie和session操作-7天免登录
浏览器同源策略(same-origin policy) csrf攻击防御核心点总结 django的cookie和session操作-7天免登录 flask操作cookie&django的see ...
- 【Linux】-NO.8.Linux.4.Command.1.001-【Common Command】-
1.0.0 Summary Tittle:[Linux]-NO.8.Linux.4.Command.1.001-[Common Command]- Style:Linux Series:Command ...
- 【LeetCode每天一题】Permutations(排列组合)
Given a collection of distinct integers, return all possible permutations. Example: Input: [1,2,3] O ...
- Nginx参数调优
(1)nginx运行工作进程个数,一般设置cpu的核心或者核心数x2 如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo文件 grep ^processor / ...