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 ...
随机推荐
- ubuntu上u-boot的编译
1,下载u-boot 2,将Windows中的u-boot复制到ubuntu虚拟机中自定义目录并解压 3,进入该目录cd 4,安装dtc:sudo apt-get install device-tre ...
- ios禁止页面下拉
document.querySelector('body').addEventListener('touchmove', function(e) { e.preventDefault(); } ...
- Performance Tuning MySQL
通常来说,MySQL性能调优是非常复杂的一件事,不是简单的修改参数就可以完成的.需要综合考虑.而且找出性能瓶颈也非易事.但是通常我们有以下的几种方法找到蛛丝马迹.通过下面的几种方法发现瓶颈以后,我们才 ...
- 【LDA】周志华
一.书籍
- [geos]Geometry基本的几何对象
读取shp中的点,读取shp中的线, (1)读取shp中的多边形,修改属性字段的值. 类库版本:geos3.6.2,shapelib1.3 定义类变量: GeometryFactory::unique ...
- clone git 项目到 非空目录
如果我们往一个非空的目录下 clone git 项目,就会提示错误信息: fatal: destination path '.' already exists and is not an empty ...
- https://www.cnblogs.com/beileixinqing/p/7724779.html vue-cli生成的项目配置开发和生产环境不同的接口 vue-cli生成的项目,vue项目配置了不同开发环境的接口地址,axios.defaults.baseURL如何引用这个地址,这是在我发布项目的时候考虑的,于是想到了
方法二:(集热心网友提供的方案) 一般项目webpack会有两个或多个配置文件,如: webpack.prod.conf.js 对应线上打包 webpack.dev.conf.js 对应开发环境 使用 ...
- node—基础命令
1.安装node,在任意文件夹下按shift键选中“在此处打开PowerShell窗口”或者直接在开始菜单输入cmd启动 2.常用命令: c: 如果我们想访问c盘,那么我们需要在命令行中输入c:就行了 ...
- Python的Pandas库简述
pandas 是 python 的数据分析处理库import pandas as pd 1.读取CSV.TXT文件 foodinfo = pd.read_csv("pandas_study. ...
- Elasticsearch5.x Head插件安装
在5.0版本中不支持直接安装head插件,需要启动一个服务. 由于head插件本质上还是一个nodejs的工程,因此需要安装node,使用npm来安装依赖的包.(npm可以理解为maven) 1.安装 ...