zoukankan
html css js c++ java
C# 里XML文件读写
已知有一个XML文件(bookstore.xml)如下:
<?
xml version
=
"
1.0
"
encoding
=
"
gb2312
"
?>
<
bookstore
>
<
book genre
=
"
fantasy
"
ISBN
=
"
2-3631-4
"
>
<
title
>
Oberon
'
s Legacy</title>
<
author
>
Corets, Eva
</
author
>
<
price
>
5.95
</
price
>
</
book
>
</
bookstore
>
1
、往
<
bookstore
>
节点中插入一个
<
book
>
节点:
XmlDocument xmlDoc
=
new
XmlDocument();
xmlDoc.Load(
"
bookstore.xml
"
);
XmlNode root
=
xmlDoc.SelectSingleNode(
"
bookstore
"
);
//
查找<bookstore>
XmlElement xe1
=
xmlDoc.CreateElement(
"
book
"
);
//
创建一个<book>节点
xe1.SetAttribute(
"
genre
"
,
"
李赞红
"
);
//
设置该节点genre属性
xe1.SetAttribute(
"
ISBN
"
,
"
2-3631-4
"
);
//
设置该节点ISBN属性
XmlElement xesub1
=
xmlDoc.CreateElement(
"
title
"
);
xesub1.InnerText
=
"
CS从入门到精通
"
;
//
设置文本节点
xe1.AppendChild(xesub1);
//
添加到<book>节点中
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);
//
添加到<bookstore>节点中
xmlDoc.Save(
"
bookstore.xml
"
);
//
================
结果为:
<?
xml version
=
"
1.0
"
encoding
=
"
gb2312
"
?>
<
bookstore
>
<
book genre
=
"
fantasy
"
ISBN
=
"
2-3631-4
"
>
<
title
>
Oberon
'
s Legacy</title>
<
author
>
Corets, Eva
</
author
>
<
price
>
5.95
</
price
>
</
book
>
<
book genre
=
"
李赞红
"
ISBN
=
"
2-3631-4
"
>
<
title
>
CS从入门到精通
</
title
>
<
author
>
候捷
</
author
>
<
price
>
58.3
</
price
>
</
book
>
</
bookstore
>
2
、修改节点:将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点
<
author
>
的文本修改为“亚胜”。
XmlNodeList nodeList
=
xmlDoc.SelectSingleNode(
"
bookstore
"
).ChildNodes;
//
获取bookstore节点的所有子节点
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
=
"
亚胜
"
;
//
则修改
break
;
//
找到退出来就可以了
}
}
break
;
}
}
xmlDoc.Save(
"
bookstore.xml
"
);
//
保存。
//
=================
最后结果为:
<?
xml version
=
"
1.0
"
encoding
=
"
gb2312
"
?>
<
bookstore
>
<
book genre
=
"
fantasy
"
ISBN
=
"
2-3631-4
"
>
<
title
>
Oberon
'
s Legacy</title>
<
author
>
Corets, Eva
</
author
>
<
price
>
5.95
</
price
>
</
book
>
<
book genre
=
"
update李赞红
"
ISBN
=
"
2-3631-4
"
>
<
title
>
CS从入门到精通
</
title
>
<
author
>
亚胜
</
author
>
<
price
>
58.3
</
price
>
</
book
>
</
bookstore
>
3
、删除
<
book genre
=
"
fantasy
"
ISBN
=
"
2-3631-4
"
>
节点的genre属性,删除
<
book genre
=
"
update李赞红
"
ISBN
=
"
2-3631-4
"
>
节点。
XmlNodeList xnl
=
xmlDoc.SelectSingleNode(
"
bookstore
"
).ChildNodes;
foreach
(XmlNode xn
in
xnl)
{ XmlElement xe
=
(XmlElement)xn;
if
(xe.GetAttribute(
"
genre
"
)
==
"
fantasy
"
)
{ xe.RemoveAttribute(
"
genre
"
);
//
删除genre属性
}
else
if
(xe.GetAttribute(
"
genre
"
)
==
"
update李赞红
"
)
{ xe.RemoveAll();
//
删除该节点的全部内容
}
}
xmlDoc.Save(
"
bookstore.xml
"
);
//
====================
最后结果为:
<?
xml version
=
"
1.0
"
encoding
=
"
gb2312
"
?>
<
bookstore
>
<
book ISBN
=
"
2-3631-4
"
>
<
title
>
Oberon
'
s Legacy</title>
<
author
>
Corets, Eva
</
author
>
<
price
>
5.95
</
price
>
</
book
>
<
book
>
</
book
>
</
bookstore
>
4
、显示所有数据。
XmlNode xn
=
xmlDoc.SelectSingleNode(
"
bookstore
"
);
XmlNodeList xnl
=
xn.ChildNodes;
foreach
(XmlNode xnf
in
xnl)
{ XmlElement xe
=
(XmlElement)xnf;
Console.WriteLine(xe.GetAttribute(
"
genre
"
));
//
显示属性值
Console.WriteLine(xe.GetAttribute(
"
ISBN
"
));
XmlNodeList xnf1
=
xe.ChildNodes;
foreach
(XmlNode xn2
in
xnf1)
{ Console.WriteLine(xn2.InnerText);
//
显示子节点点文本
}
}
另有:
using
System;
using
System.IO;
using
System.Web;
using
System.Text;
using
System.Xml;
using
System.Collections;
namespace
ShopWeb.Class
{
/**/
///
<summary>
///
Log 的摘要说明。
///
</summary>
public
class
Log
{
private
XmlDocument xmlLog
=
new
XmlDocument();
private
HttpContext context
=
HttpContext.Current;
private
string
xmlPath
=
""
;
/**/
///
<summary>
///
构造函数
///
</summary>
///
<param name="XmlPath"></param>
public
Log(
string
XmlPath)
{
xmlPath
=
XmlPath;
xmlLog.Load(context.Server.MapPath(XmlPath));
}
/**/
///
<summary>
///
增加一个节点,该节点由子节点构成
///
</summary>
///
<param name="HTChilds"></param>
///
<param name="ParentName"></param>
///
<returns></returns>
public
bool
AddNodeByChild(Hashtable HTChilds ,
string
ParentName)
{
try
{
XmlNode Parent
=
xmlLog.CreateElement(ParentName);
XmlNode Child;
IDictionaryEnumerator myEnumerator
=
HTChilds.GetEnumerator();
while
(myEnumerator.MoveNext())
{
Child
=
xmlLog.CreateElement(myEnumerator.Key.ToString());
Child.InnerText
=
myEnumerator.Value.ToString();
Parent.AppendChild(Child);
xmlLog.DocumentElement.AppendChild(Parent);
}
xmlLog.Save(context.Server.MapPath(xmlPath));
return
true
;
}
catch
{
return
false
;
}
}
/**/
///
<summary>
///
增加一个节点 该节点由属性构成
///
</summary>
///
<param name="htAttributes"></param>
///
<param name="NodeName"></param>
///
<returns></returns>
public
bool
AddNodeByAttribute(Hashtable htAttributes,
string
NodeName)
{
try
{
XmlNode AddNode
=
xmlLog.CreateElement(NodeName);
IDictionaryEnumerator myEnumerator
=
htAttributes.GetEnumerator();
XmlAttribute atr;
while
(myEnumerator.MoveNext())
{
atr
=
xmlLog.CreateAttribute(myEnumerator.Key.ToString());
atr.InnerText
=
myEnumerator.Value.ToString();
AddNode.Attributes.Append(atr);
xmlLog.DocumentElement.AppendChild(AddNode);
}
xmlLog.Save(context.Server.MapPath(xmlPath));
return
true
;
}
catch
{
return
false
;
}
}
/**/
///
<summary>
///
或得指定查询节点得子节点数目
///
</summary>
///
<param name="QueryPath"></param>
///
<returns></returns>
public
int
ChildCount(
string
QueryPath)
{
try
{
XmlNode ResultNodes
=
xmlLog.SelectSingleNode(QueryPath);
return
ResultNodes.ChildNodes.Count;
}
catch
{
return
-
1
;
}
}
/**/
///
<summary>
///
删除指定路径的节点
///
</summary>
///
<param name="QueryPath"></param>
///
<returns></returns>
public
bool
DelelteNode(
string
QueryPath)
{
try
{
XmlNodeList ResultNodes
=
xmlLog.SelectNodes(QueryPath);
for
(
int
i
=
0
;i
<
ResultNodes.Count;i
++
)
{
XmlNode ParentNode
=
ResultNodes.ParentNode;
ParentNode.RemoveChild(ResultNodes);
}
xmlLog.Save(context.Server.MapPath(xmlPath));
return
true
;
}
catch
{
return
false
;
}
}
/**/
///
<summary>
///
查询节点
///
</summary>
///
<param name="QueryPath"></param>
///
<returns></returns>
public
XmlNodeList QueryNode(
string
QueryPath)
{
try
{
XmlNodeList ResultNodes
=
xmlLog.SelectNodes(QueryPath);
return
ResultNodes;
}
catch
{
return
null
;
}
}
}
}
查看全文
相关阅读:
shell编程 之 引号、括号的用法总结
shell编程 之 文件包含
shell编程 之 输入输出重定向
shell编程 之 流程控制(条件语句和循环语句)
shell编程 之 函数
IOS 定位
IOS添加多个按钮在导航栏
移除UIView上面的所有控件
UITabBarController
IOS 调用拨打电话Api
原文地址:https://www.cnblogs.com/kokoliu/p/653747.html
最新文章
问题账户需求分析
2018春季个人阅读计划
怎样进行需求分析?
找一点自己喜欢的事
开发进度05
6继承与多态
4String
查询创建的对象
3类与对象
2方法(课后作业)
热门文章
2方法(动手动脑)
实验五
实验四
课程作业01(参数求和)
课程作业02(关于java的几点讨论)
shellb编程 之 实践出真知
linux中如何使用终端裁剪图片?
python练习 之 实践出真知 中心扩展法求最大回文子串 (leetcode题目)
awk基本用法
shell编程 之 实践出真知(代码实例)
Copyright © 2011-2022 走看看