zoukankan
html css js c++ java
通过DataSet操作XML
以下是通过DataSet操作XML的类:
using
System;
using
System.Collections;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Web;
using
System.Web.SessionState;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.HtmlControls;
using
System.Xml;
namespace
OP_XML
{
/**/
///
<summary>
///
OperateXmlByDataSet 调试通过。
///
</summary>
public
class
OperateXmlByDataSet : System.Web.UI.Page
{
private
void
Page_Load(
object
sender, System.EventArgs e)
{
//
在此处放置用户代码以初始化页面
}
Web 窗体设计器生成的代码
#region
Web 窗体设计器生成的代码
override
protected
void
OnInit(EventArgs e)
{
//
//
CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base
.OnInit(e);
}
/**/
///
<summary>
///
设计器支持所需的方法 - 不要使用代码编辑器修改
///
此方法的内容。
///
</summary>
private
void
InitializeComponent()
{
this
.Load
+=
new
System.EventHandler(
this
.Page_Load);
}
#endregion
GetDataSetByXml
#region
GetDataSetByXml
/**/
///
<summary>
///
读取xml直接返回DataSet
///
</summary>
///
<param name="strXmlPath">
xml文件相对路径
</param>
///
<returns></returns>
public
static
DataSet GetDataSetByXml(
string
strXmlPath)
{
try
{
DataSet ds
=
new
DataSet();
ds.ReadXml(GetXmlFullPath(strXmlPath));
if
(ds.Tables.Count
>
0
)
{
return
ds;
}
return
null
;
}
catch
(Exception)
{
return
null
;
}
}
#endregion
GetDataViewByXml
#region
GetDataViewByXml
/**/
///
<summary>
///
读取Xml返回一个经排序或筛选后的DataView
///
</summary>
///
<param name="strXmlPath"></param>
///
<param name="strWhere">
筛选条件,如:"name = 'kgdiwss'"
</param>
///
<param name="strSort">
排序条件,如:"Id desc"
</param>
///
<returns></returns>
public
static
DataView GetDataViewByXml(
string
strXmlPath,
string
strWhere,
string
strSort)
{
try
{
DataSet ds
=
new
DataSet();
ds.ReadXml(GetXmlFullPath(strXmlPath));
DataView dv
=
new
DataView(ds.Tables[
0
]);
if
(strSort
!=
null
)
{
dv.Sort
=
strSort;
}
if
(strWhere
!=
null
)
{
dv.RowFilter
=
strWhere;
}
return
dv;
}
catch
(Exception)
{
return
null
;
}
}
#endregion
WriteXmlByDataSet
#region
WriteXmlByDataSet
/**/
///
<summary>
///
向Xml文件插入一行数据
///
</summary>
///
<param name="strXmlPath">
xml文件相对路径
</param>
///
<param name="Columns">
要插入行的列名数组,如:string[] Columns = {"name","IsMarried"};
</param>
///
<param name="ColumnValue">
要插入行每列的值数组,如:string[] ColumnValue={"明天去要饭","false"};
</param>
///
<returns>
成功返回true,否则返回false
</returns>
public
static
bool
WriteXmlByDataSet(
string
strXmlPath,
string
[] Columns,
string
[] ColumnValue)
{
try
{
//
根据传入的XML路径得到.XSD的路径,两个文件放在同一个目录下
string
strXsdPath
=
strXmlPath.Substring(
0
,strXmlPath.IndexOf(
"
.
"
))
+
"
.xsd
"
;
DataSet ds
=
new
DataSet();
//
读xml架构,关系到列的数据类型
ds.ReadXmlSchema(GetXmlFullPath(strXsdPath));
ds.ReadXml(GetXmlFullPath(strXmlPath));
DataTable dt
=
ds.Tables[
0
];
//
在原来的表格基础上创建新行
DataRow newRow
=
dt.NewRow();
//
循环给一行中的各个列赋值
for
(
int
i
=
0
; i
<
Columns.Length; i
++
)
{
newRow[Columns[i]]
=
ColumnValue[i];
}
dt.Rows.Add(newRow);
dt.AcceptChanges();
ds.AcceptChanges();
ds.WriteXml(GetXmlFullPath(strXmlPath));
return
true
;
}
catch
(Exception)
{
return
false
;
}
}
#endregion
UpdateXmlRow
#region
UpdateXmlRow
/**/
///
<summary>
///
更行符合条件的一条Xml记录
///
</summary>
///
<param name="strXmlPath">
XML文件路径
</param>
///
<param name="Columns">
列名数组
</param>
///
<param name="ColumnValue">
列值数组
</param>
///
<param name="strWhereColumnName">
条件列名
</param>
///
<param name="strWhereColumnValue">
条件列值
</param>
///
<returns></returns>
public
static
bool
UpdateXmlRow(
string
strXmlPath,
string
[] Columns,
string
[] ColumnValue,
string
strWhereColumnName,
string
strWhereColumnValue)
{
try
{
string
strXsdPath
=
strXmlPath.Substring(
0
,strXmlPath.IndexOf(
"
.
"
))
+
"
.xsd
"
;
DataSet ds
=
new
DataSet();
//
读xml架构,关系到列的数据类型
ds.ReadXmlSchema(GetXmlFullPath(strXsdPath));
ds.ReadXml(GetXmlFullPath(strXmlPath));
//
先判断行数
if
(ds.Tables[
0
].Rows.Count
>
0
)
{
for
(
int
i
=
0
; i
<
ds.Tables[
0
].Rows.Count; i
++
)
{
//
如果当前记录为符合Where条件的记录
if
(ds.Tables[
0
].Rows[i][strWhereColumnName].ToString().Trim().Equals(strWhereColumnValue))
{
//
循环给找到行的各列赋新值
for
(
int
j
=
0
; j
<
Columns.Length; j
++
)
{
ds.Tables[
0
].Rows[i][Columns[j]]
=
ColumnValue[j];
}
//
更新DataSet
ds.AcceptChanges();
//
重新写入XML文件
ds.WriteXml(GetXmlFullPath(strXmlPath));
return
true
;
}
}
}
return
false
;
}
catch
(Exception)
{
return
false
;
}
}
#endregion
DeleteXmlRowByIndex
#region
DeleteXmlRowByIndex
/**/
///
<summary>
///
通过删除DataSet中iDeleteRow这一行,然后重写Xml以实现删除指定行
///
</summary>
///
<param name="strXmlPath"></param>
///
<param name="iDeleteRow">
要删除的行在DataSet中的Index值
</param>
public
static
bool
DeleteXmlRowByIndex(
string
strXmlPath,
int
iDeleteRow)
{
try
{
DataSet ds
=
new
DataSet();
ds.ReadXml(GetXmlFullPath(strXmlPath));
if
(ds.Tables[
0
].Rows.Count
>
0
)
{
//
删除符号条件的行
ds.Tables[
0
].Rows[iDeleteRow].Delete();
}
ds.WriteXml(GetXmlFullPath(strXmlPath));
return
true
;
}
catch
(Exception)
{
return
false
;
}
}
#endregion
DeleteXmlRows
#region
DeleteXmlRows
/**/
///
<summary>
///
删除strColumn列中值为ColumnValue的行
///
</summary>
///
<param name="strXmlPath">
xml相对路径
</param>
///
<param name="strColumn">
列名
</param>
///
<param name="ColumnValue">
strColumn列中值为ColumnValue的行均会被删除
</param>
///
<returns></returns>
public
static
bool
DeleteXmlRows(
string
strXmlPath,
string
strColumn,
string
[] ColumnValue)
{
try
{
DataSet ds
=
new
DataSet();
ds.ReadXml(GetXmlFullPath(strXmlPath));
//
先判断行数
if
(ds.Tables[
0
].Rows.Count
>
0
)
{
//
判断行多还是删除的值多,多的for循环放在里面
if
(ColumnValue.Length
>
ds.Tables[
0
].Rows.Count)
{
for
(
int
i
=
0
; i
<
ds.Tables[
0
].Rows.Count; i
++
)
{
for
(
int
j
=
0
; j
<
ColumnValue.Length; j
++
)
{
if
(ds.Tables[
0
].Rows[i][strColumn].ToString().Trim().Equals(ColumnValue[j]))
{
ds.Tables[
0
].Rows[i].Delete();
}
}
}
}
else
{
for
(
int
j
=
0
; j
<
ColumnValue.Length; j
++
)
{
for
(
int
i
=
0
; i
<
ds.Tables[
0
].Rows.Count; i
++
)
{
if
(ds.Tables[
0
].Rows[i][strColumn].ToString().Trim().Equals(ColumnValue[j]))
{
ds.Tables[
0
].Rows[i].Delete();
}
}
}
}
ds.WriteXml(GetXmlFullPath(strXmlPath));
}
return
true
;
}
catch
(Exception)
{
return
false
;
}
}
#endregion
DeleteXmlAllRows
#region
DeleteXmlAllRows
/**/
///
<summary>
///
删除所有行
///
</summary>
///
<param name="strXmlPath">
XML路径
</param>
///
<returns></returns>
public
static
bool
DeleteXmlAllRows(
string
strXmlPath)
{
try
{
DataSet ds
=
new
DataSet();
ds.ReadXml(GetXmlFullPath(strXmlPath));
//
如果记录条数大于0
if
(ds.Tables[
0
].Rows.Count
>
0
)
{
//
移除所有记录
ds.Tables[
0
].Rows.Clear();
}
//
重新写入,这时XML文件中就只剩根节点了
ds.WriteXml(GetXmlFullPath(strXmlPath));
return
true
;
}
catch
(Exception)
{
return
false
;
}
}
#endregion
GetXmlFullPath
#region
GetXmlFullPath
/**/
///
<summary>
///
返回完整路径
///
</summary>
///
<param name="strPath">
Xml的路径
</param>
///
<returns></returns>
public
static
string
GetXmlFullPath(
string
strPath)
{
if
(strPath.IndexOf(
"
:
"
)
>
0
)
{
return
strPath;
}
else
{
//
!不支持server
//
return Server.MapPath(strPath);
return
strPath;
}
}
#endregion
}
}
作者:
青羽
查看全文
相关阅读:
第四章 连接管理
第三章 http报文
第二章 URL与资源
第一章 http概述
html5 canvas 游戏地图绘制
jqGrid 编辑完数据后能返回到当前位置的方法
发布APP到app store
STSDB、NDataBase 对象数据库在不同.net framework下无法读取的解决办法
System.Json 使用注意
TiQuery
原文地址:https://www.cnblogs.com/tenghoo/p/507636.html
最新文章
laravel读取excel
rabbitmq php
docker安装
mysql技巧
swift 隐藏tabbar最简单的操作
app pay开发遇到的坑
关于百度分享不支持arm64的解决方法
ios 导入类的那点事
command /usr/bin/codesign failed with exith code 1解决方法
转 iOS:ARC相关知识,assign/copy/retain/strong/weak/readyonly/readwrite/nonatomic/atomic
热门文章
ARC总结
xcode6.1.1 instruments allocations 名词解释
Can't add self as subview crash错误
转 SDWebImage使用及原理
CSS 选择器
jdk源码调试 不显示变量值
spring security4 问题
Access denied for user 'root'@'localhost' (using password:YES) 问题
flex学习之旅--------MXML学习
flex学习之旅--------flashBuidler
Copyright © 2011-2022 走看看