zoukankan
html css js c++ java
XML操作大全
需要添加的命名空间:
using
System.Xml;
定义几个公共对象:
XmlDocument xmldoc ;
XmlNode xmlnode ;
XmlElement xmlelem ;
1
,创建到服务器同名目录下的xml文件:
方法一:
xmldoc
=
new
XmlDocument ( ) ;
//
加入XML的声明段落,<?xml version="1.0" encoding="gb2312"?>
XmlDeclaration xmldecl;
xmldecl
=
xmldoc.CreateXmlDeclaration(
"
1.0
"
,
"
gb2312
"
,
null
);
xmldoc.AppendChild ( xmldecl);
//
加入一个根元素
xmlelem
=
xmldoc.CreateElement (
""
,
"
Employees
"
,
""
) ;
xmldoc.AppendChild ( xmlelem ) ;
//
加入另外一个元素
for
(
int
i
=
1
;i
<
3
;i
++
)
{
XmlNode root
=
xmldoc.SelectSingleNode(
"
Employees
"
);
//
查找<Employees>
XmlElement xe1
=
xmldoc.CreateElement(
"
Node
"
);
//
创建一个<Node>节点
xe1.SetAttribute(
"
genre
"
,
"
李赞红
"
);
//
设置该节点genre属性
xe1.SetAttribute(
"
ISBN
"
,
"
2-3631-4
"
);
//
设置该节点ISBN属性
XmlElement xesub1
=
xmldoc.CreateElement(
"
title
"
);
xesub1.InnerText
=
"
CS从入门到精通
"
;
//
设置文本节点
xe1.AppendChild(xesub1);
//
添加到<Node>节点中
XmlElement xesub2
=
xmldoc.CreateElement(
"
author
"
);
xesub2.InnerText
=
"
候捷
"
;
xe1.AppendChild(xesub2);
XmlElement xesub3
=
xmldoc.CreateElement(
"
price
"
);
xesub3.InnerText
=
"
58.3
"
;
xe1.AppendChild(xesub3);
root.AppendChild(xe1);
//
添加到<Employees>节点中
}
//
保存创建好的XML文档
xmldoc.Save ( Server.MapPath(
"
data.xml
"
) ) ;
/**/
////////////////////////////////////////////////////////////////////////////////////
//
结果:在同名目录下生成了名为data.xml的文件,内容如下,
<?
xml version
=
"
1.0
"
encoding
=
"
gb2312
"
?>
<
Employees
>
<
Node genre
=
"
李赞红
"
ISBN
=
"
2-3631-4
"
>
<
title
>
CS从入门到精通
</
title
>
<
author
>
候捷
</
author
>
<
price
>
58.3
</
price
>
</
Node
>
<
Node genre
=
"
李赞红
"
ISBN
=
"
2-3631-4
"
>
<
title
>
CS从入门到精通
</
title
>
<
author
>
候捷
</
author
>
<
price
>
58.3
</
price
>
</
Node
>
</
Employees
>
方法二:
XmlTextWriter xmlWriter;
string
strFilename
=
Server.MapPath(
"
data1.xml
"
) ;
xmlWriter
=
new
XmlTextWriter(strFilename,Encoding.Default);
//
创建一个xml文档
xmlWriter.Formatting
=
Formatting.Indented;
xmlWriter.WriteStartDocument();
xmlWriter.WriteStartElement(
"
Employees
"
);
xmlWriter.WriteStartElement(
"
Node
"
);
xmlWriter.WriteAttributeString(
"
genre
"
,
"
李赞红
"
);
xmlWriter.WriteAttributeString(
"
ISBN
"
,
"
2-3631-4
"
);
xmlWriter.WriteStartElement(
"
title
"
);
xmlWriter.WriteString(
"
CS从入门到精通
"
);
xmlWriter.WriteEndElement();
xmlWriter.WriteStartElement(
"
author
"
);
xmlWriter.WriteString(
"
候捷
"
);
xmlWriter.WriteEndElement();
xmlWriter.WriteStartElement(
"
price
"
);
xmlWriter.WriteString(
"
58.3
"
);
xmlWriter.WriteEndElement();
xmlWriter.WriteEndElement();
xmlWriter.Close();
/**/
////////////////////////////////////////////////////////////////////////////////////
//
结果:
<?
xml version
=
"
1.0
"
encoding
=
"
gb2312
"
?>
<
Employees
>
<
Node genre
=
"
李赞红
"
ISBN
=
"
2-3631-4
"
>
<
title
>
CS从入门到精通
</
title
>
<
author
>
候捷
</
author
>
<
price
>
58.3
</
price
>
</
Node
>
</
Employees
>
2
,添加一个结点:
XmlDocument xmlDoc
=
new
XmlDocument();
xmlDoc.Load(Server.MapPath(
"
data.xml
"
));
XmlNode root
=
xmlDoc.SelectSingleNode(
"
Employees
"
);
//
查找<Employees>
XmlElement xe1
=
xmlDoc.CreateElement(
"
Node
"
);
//
创建一个<Node>节点
xe1.SetAttribute(
"
genre
"
,
"
张三
"
);
//
设置该节点genre属性
xe1.SetAttribute(
"
ISBN
"
,
"
1-1111-1
"
);
//
设置该节点ISBN属性
XmlElement xesub1
=
xmlDoc.CreateElement(
"
title
"
);
xesub1.InnerText
=
"
C#入门帮助
"
;
//
设置文本节点
xe1.AppendChild(xesub1);
//
添加到<Node>节点中
XmlElement xesub2
=
xmlDoc.CreateElement(
"
author
"
);
xesub2.InnerText
=
"
高手
"
;
xe1.AppendChild(xesub2);
XmlElement xesub3
=
xmlDoc.CreateElement(
"
price
"
);
xesub3.InnerText
=
"
158.3
"
;
xe1.AppendChild(xesub3);
root.AppendChild(xe1);
//
添加到<Employees>节点中
xmlDoc.Save ( Server.MapPath(
"
data.xml
"
) );
/**/
////////////////////////////////////////////////////////////////////////////////////
//
结果:在xml原有的内容里添加了一个结点,内容如下,
<?
xml version
=
"
1.0
"
encoding
=
"
gb2312
"
?>
<
Employees
>
<
Node genre
=
"
李赞红
"
ISBN
=
"
2-3631-4
"
>
<
title
>
CS从入门到精通
</
title
>
<
author
>
候捷
</
author
>
<
price
>
58.3
</
price
>
</
Node
>
<
Node genre
=
"
李赞红
"
ISBN
=
"
2-3631-4
"
>
<
title
>
CS从入门到精通
</
title
>
<
author
>
候捷
</
author
>
<
price
>
58.3
</
price
>
</
Node
>
<
Node genre
=
"
张三
"
ISBN
=
"
1-1111-1
"
>
<
title
>
C#入门帮助
</
title
>
<
author
>
高手
</
author
>
<
price
>
158.3
</
price
>
</
Node
>
</
Employees
>
3
,修改结点的值(属性和子结点):
XmlDocument xmlDoc
=
new
XmlDocument();
xmlDoc.Load( Server.MapPath(
"
data.xml
"
) );
XmlNodeList nodeList
=
xmlDoc.SelectSingleNode(
"
Employees
"
).ChildNodes;
//
获取Employees节点的所有子节点
foreach
(XmlNode xn
in
nodeList)
//
遍历所有子节点
{
XmlElement xe
=
(XmlElement)xn;
//
将子节点类型转换为XmlElement类型
if
(xe.GetAttribute(
"
genre
"
)
==
"
张三
"
)
//
如果genre属性值为“张三”
{
xe.SetAttribute(
"
genre
"
,
"
update张三
"
);
//
则修改该属性为“update张三”
XmlNodeList nls
=
xe.ChildNodes;
//
继续获取xe子节点的所有子节点
foreach
(XmlNode xn1
in
nls)
//
遍历
{
XmlElement xe2
=
(XmlElement)xn1;
//
转换类型
if
(xe2.Name
==
"
author
"
)
//
如果找到
{
xe2.InnerText
=
"
亚胜
"
;
//
则修改
}
}
}
}
xmlDoc.Save( Server.MapPath(
"
data.xml
"
) );
//
保存。
/**/
////////////////////////////////////////////////////////////////////////////////////
//
结果:将原来的所有结点的信息都修改了,xml的内容如下,
<?
xml version
=
"
1.0
"
encoding
=
"
gb2312
"
?>
<
Employees
>
<
Node genre
=
"
李赞红
"
ISBN
=
"
2-3631-4
"
>
<
title
>
CS从入门到精通
</
title
>
<
author
>
候捷
</
author
>
<
price
>
58.3
</
price
>
</
Node
>
<
Node genre
=
"
李赞红
"
ISBN
=
"
2-3631-4
"
>
<
title
>
CS从入门到精通
</
title
>
<
author
>
候捷
</
author
>
<
price
>
58.3
</
price
>
</
Node
>
<
Node genre
=
"
update张三
"
ISBN
=
"
1-1111-1
"
>
<
title
>
C#入门帮助
</
title
>
<
author
>
亚胜
</
author
>
<
price
>
158.3
</
price
>
</
Node
>
</
Employees
>
4
,修改结点(添加结点的属性和添加结点的自结点):
XmlDocument xmlDoc
=
new
XmlDocument();
xmlDoc.Load( Server.MapPath(
"
data.xml
"
) );
XmlNodeList nodeList
=
xmlDoc.SelectSingleNode(
"
Employees
"
).ChildNodes;
//
获取Employees节点的所有子节点
foreach
(XmlNode xn
in
nodeList)
{
XmlElement xe
=
(XmlElement)xn;
xe.SetAttribute(
"
test
"
,
"
111111
"
);
XmlElement xesub
=
xmlDoc.CreateElement(
"
flag
"
);
xesub.InnerText
=
"
1
"
;
xe.AppendChild(xesub);
}
xmlDoc.Save( Server.MapPath(
"
data.xml
"
) );
/**/
////////////////////////////////////////////////////////////////////////////////////
//
结果:每个结点的属性都添加了一个,子结点也添加了一个,内容如下,
<?
xml version
=
"
1.0
"
encoding
=
"
gb2312
"
?>
<
Employees
>
<
Node genre
=
"
李赞红
"
ISBN
=
"
2-3631-4
"
test
=
"
111111
"
>
<
title
>
CS从入门到精通
</
title
>
<
author
>
候捷
</
author
>
<
price
>
58.3
</
price
>
<
flag
>
1
</
flag
>
</
Node
>
<
Node genre
=
"
李赞红
"
ISBN
=
"
2-3631-4
"
test
=
"
111111
"
>
<
title
>
CS从入门到精通
</
title
>
<
author
>
候捷
</
author
>
<
price
>
58.3
</
price
>
<
flag
>
1
</
flag
>
</
Node
>
<
Node genre
=
"
update张三
"
ISBN
=
"
1-1111-1
"
test
=
"
111111
"
>
<
title
>
C#入门帮助
</
title
>
<
author
>
亚胜
</
author
>
<
price
>
158.3
</
price
>
<
flag
>
1
</
flag
>
</
Node
>
</
Employees
>
5
,删除结点中的某一个属性:
XmlDocument xmlDoc
=
new
XmlDocument();
xmlDoc.Load( Server.MapPath(
"
data.xml
"
) );
XmlNodeList xnl
=
xmlDoc.SelectSingleNode(
"
Employees
"
).ChildNodes;
foreach
(XmlNode xn
in
xnl)
{
XmlElement xe
=
(XmlElement)xn;
xe.RemoveAttribute(
"
genre
"
);
//
删除genre属性
XmlNodeList nls
=
xe.ChildNodes;
//
继续获取xe子节点的所有子节点
foreach
(XmlNode xn1
in
nls)
//
遍历
{
XmlElement xe2
=
(XmlElement)xn1;
//
转换类型
if
(xe2.Name
==
"
flag
"
)
//
如果找到
{
xe.RemoveChild(xe2);
//
则删除
}
}
}
xmlDoc.Save( Server.MapPath(
"
data.xml
"
) );
/**/
////////////////////////////////////////////////////////////////////////////////////
//]
结果:删除了结点的一个属性和结点的一个子结点,内容如下,
<?
xml version
=
"
1.0
"
encoding
=
"
gb2312
"
?>
<
Employees
>
<
Node ISBN
=
"
2-3631-4
"
test
=
"
111111
"
>
<
title
>
CS从入门到精通
</
title
>
<
author
>
候捷
</
author
>
<
price
>
58.3
</
price
>
</
Node
>
<
Node ISBN
=
"
2-3631-4
"
test
=
"
111111
"
>
<
title
>
CS从入门到精通
</
title
>
<
author
>
候捷
</
author
>
<
price
>
58.3
</
price
>
</
Node
>
<
Node ISBN
=
"
1-1111-1
"
test
=
"
111111
"
>
<
title
>
C#入门帮助
</
title
>
<
author
>
亚胜
</
author
>
<
price
>
158.3
</
price
>
</
Node
>
</
Employees
>
6
,删除结点:
XmlDocument xmlDoc
=
new
XmlDocument();
xmlDoc.Load( Server.MapPath(
"
data.xml
"
) );
XmlNode root
=
xmlDoc.SelectSingleNode(
"
Employees
"
);
XmlNodeList xnl
=
xmlDoc.SelectSingleNode(
"
Employees
"
).ChildNodes;
for
(
int
i
=
0
;i
<
xnl.Count;i
++
)
{
XmlElement xe
=
(XmlElement)xnl.Item(i);
if
(xe.GetAttribute(
"
genre
"
)
==
"
张三
"
)
{
root.RemoveChild(xe);
if
(i
<
xnl.Count)i
=
i
-
1
;
}
}
xmlDoc.Save( Server.MapPath(
"
data.xml
"
) );
/**/
////////////////////////////////////////////////////////////////////////////////////
//]
结果:删除了符合条件的所有结点,原来的内容:
<?
xml version
=
"
1.0
"
encoding
=
"
gb2312
"
?>
<
Employees
>
<
Node genre
=
"
李赞红
"
ISBN
=
"
2-3631-4
"
>
<
title
>
CS从入门到精通
</
title
>
<
author
>
候捷
</
author
>
<
price
>
58.3
</
price
>
</
Node
>
<
Node genre
=
"
李赞红
"
ISBN
=
"
2-3631-4
"
>
<
title
>
CS从入门到精通
</
title
>
<
author
>
候捷
</
author
>
<
price
>
58.3
</
price
>
</
Node
>
<
Node genre
=
"
张三
"
ISBN
=
"
1-1111-1
"
>
<
title
>
C#入门帮助
</
title
>
<
author
>
高手
</
author
>
<
price
>
158.3
</
price
>
</
Node
>
<
Node genre
=
"
张三
"
ISBN
=
"
1-1111-1
"
>
<
title
>
C#入门帮助
</
title
>
<
author
>
高手
</
author
>
<
price
>
158.3
</
price
>
</
Node
>
</
Employees
>
删除后的内容:
<?
xml version
=
"
1.0
"
encoding
=
"
gb2312
"
?>
<
Employees
>
<
Node genre
=
"
李赞红
"
ISBN
=
"
2-3631-4
"
>
<
title
>
CS从入门到精通
</
title
>
<
author
>
候捷
</
author
>
<
price
>
58.3
</
price
>
</
Node
>
<
Node genre
=
"
李赞红
"
ISBN
=
"
2-3631-4
"
>
<
title
>
CS从入门到精通
</
title
>
<
author
>
候捷
</
author
>
<
price
>
58.3
</
price
>
</
Node
>
</
Employees
>
7
,按照文本文件读取xml
System.IO.StreamReader myFile
=
new
System.IO.StreamReader(Server.MapPath(
"
data.xml
"
),System.Text.Encoding.Default);
//
注意System.Text.Encoding.Default
string
myString
=
myFile.ReadToEnd();
//
myString是读出的字符串
myFile.Close();
查看全文
相关阅读:
Python全栈开发记录_第七篇(模块_time_datetime_random_os_sys_hashlib_logging_configparser_re)
Python全栈开发记录_第六篇(生成器和迭代器)
Python全栈开发记录_第五篇(装饰器)
Python全栈开发记录_第四篇(集合、函数等知识点)
Python全栈开发记录_第三篇(linux(ubuntu)的操作)
Python全栈开发记录_第二篇(文件操作及三级菜单栏增删改查)
Python全栈开发记录_第一篇(循环练习及杂碎的知识点)
NET控件Designer架构设计
如何把Excel中的单元格等对象保存成图片
“某某云词典” – 纠结的初体验
原文地址:https://www.cnblogs.com/liufei88866/p/1247663.html
最新文章
关于“java.lang.OutOfMemoryError : unable to create new native Thread”的报错问题
linux定时任务(转)
shell脚本中大于,大于等于,小于,小于等于、不等于的表示方法
scala中可以执行外部命令Process
hdfs的文件个数 HDFS Quotas Guide
hive删除数据(转)
spark读写Oracle、hive的艰辛之路(一)
libcurl长连接高并发多线程
Socket TCP协议通讯粘包算法
Qt访问注册表QSettings 遍历查找key值
热门文章
Qt启动子进程,子进程关闭时通知主进程,实现主进程对子进程的管理
QScrollBar设置滑块滑槽箭头增加减少按钮的样式设置
0x00007FFE4FEAB0BE (ucrtbase.dll) (FaceMatch.exe 中)处有未经处理的异常: 请求了严重的程序退出。
VS2015断点无法命中解决办法--release和debug都可以调试
分布式系统RPC和IPC
soket通讯完成端口IOCP和select对比
Java线程原理和5种同步方法
Python全栈开发记录_第十篇(反射及选课系统练习)
Python全栈开发记录_第九篇(面向对象(类)的学习)
Python全栈开发记录_第八篇(模块收尾工作 json & pickle & shelve & xml)
Copyright © 2011-2022 走看看