通过Dataset操作xml数据(添加,删除,修改)
1)cameralist.xml文件的主要内容:
<?xml version="1.0" encoding="utf-8"?>
<subway>
<station name="地点1" id="0">
<camera dvrip="192.168.4.61" channel="1" cameraid="1">No.1 street</camera>
<camera dvrip="192.168.4.61" channel="2" cameraid="2">No.2 street</camera>
</station>
</subway>
篇幅原因只设置了一个站点。
<?xml version="1.0" encoding="utf-8"?>
<subway>
<station name="地点1" id="0">
<camera dvrip="192.168.4.61" channel="1" cameraid="1">No.1 street</camera>
<camera dvrip="192.168.4.61" channel="2" cameraid="2">No.2 street</camera>
</station>
</subway>
篇幅原因只设置了一个站点。
2)cameralist.xsd文件内容:
<?xml version="1.0" standalone="yes"?>
<xs:schema id="subway" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="subway" msdata:IsDataSet="true" msdata:Locale="en-US">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="station">
<xs:complexType>
<xs:sequence>
<xs:element name="camera" nillable="true" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent msdata:ColumnName="camera_Text" msdata:Ordinal="3">
<xs:extension base="xs:string">
<xs:attribute name="dvrip" type="xs:string" />
<xs:attribute name="channel" type="xs:string" />
<xs:attribute name="cameraid" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string" />
<xs:attribute name="id" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
用于设置dataset 中datatables的column及各table之间的干系;可用如下方法生成:
System.Data.DataSet ds = new System.Data.DataSet();
ds.ReadXml("cameralist.xml");
ds.WriteXmlSchema("cameralist.xsd"); …………
<?xml version="1.0" standalone="yes"?>
<xs:schema id="subway" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="subway" msdata:IsDataSet="true" msdata:Locale="en-US">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="station">
<xs:complexType>
<xs:sequence>
<xs:element name="camera" nillable="true" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent msdata:ColumnName="camera_Text" msdata:Ordinal="3">
<xs:extension base="xs:string">
<xs:attribute name="dvrip" type="xs:string" />
<xs:attribute name="channel" type="xs:string" />
<xs:attribute name="cameraid" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string" />
<xs:attribute name="id" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
用于设置dataset 中datatables的column及各table之间的干系;可用如下方法生成:
System.Data.DataSet ds = new System.Data.DataSet();
ds.ReadXml("cameralist.xml");
ds.WriteXmlSchema("cameralist.xsd"); …………
3)xml文件的操作:
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections.Generic;
using System.Text;
namespace cameras
{
class CameraXmlData
{
public static System.Xml.XmlDataDocument CameraXdoc; //采用静态的XmlDataDocument的变量,将xml文件转化为DataSet进行操作
public static Int32 NumberOfStation; //站点的个数
public CameraXmlData()
{
}
{
class CameraXmlData
{
public static System.Xml.XmlDataDocument CameraXdoc; //采用静态的XmlDataDocument的变量,将xml文件转化为DataSet进行操作
public static Int32 NumberOfStation; //站点的个数
public CameraXmlData()
{
}
//
//初始化CameraXdoc,及NumberOfStation;
//CameraXdoc.DataSet中有两天DataTable:
//CameraXdoc.DataSet.Tables["station"],其中的列:name,id,station_Id(在xml中隐藏)
//CameraXdoc.DataSet.Tables["camera"],其中的列:dvrip,channel,cameraid,camera_Text,station_Id(隐藏)
//注意:存储Tables["camera"]时必须将其station_Id的值与Tables["station"]中station_Id的值相对应,否则会出现问题
//
//初始化CameraXdoc,及NumberOfStation;
//CameraXdoc.DataSet中有两天DataTable:
//CameraXdoc.DataSet.Tables["station"],其中的列:name,id,station_Id(在xml中隐藏)
//CameraXdoc.DataSet.Tables["camera"],其中的列:dvrip,channel,cameraid,camera_Text,station_Id(隐藏)
//注意:存储Tables["camera"]时必须将其station_Id的值与Tables["station"]中station_Id的值相对应,否则会出现问题
//
public void loadxmldata(string xmlfile, string xsdfile)
{
CameraXdoc = new System.Xml.XmlDataDocument();
CameraXdoc.DataSet.ReadXmlSchema(xsdfile);
CameraXdoc.Load(xmlfile);
NumberOfStation = CameraXdoc.DataSet.Tables["station"].Rows.Count;
}
{
CameraXdoc = new System.Xml.XmlDataDocument();
CameraXdoc.DataSet.ReadXmlSchema(xsdfile);
CameraXdoc.Load(xmlfile);
NumberOfStation = CameraXdoc.DataSet.Tables["station"].Rows.Count;
}
//
//station------------------------------------------------------------------------------------------
//
//station------------------------------------------------------------------------------------------
//
public string addstation(string name)
{
System.Data.DataRow stationrow = CameraXdoc.DataSet.Tables["station"].NewRow();
stationrow["name"] = name;
string id = ((Int32)CameraXdoc.DataSet.Tables["station"].Rows[NumberOfStation - 1]["station_Id"] + 1).ToString();
stationrow["id"] = id;
CameraXdoc.DataSet.Tables["station"].Rows.Add(stationrow);
NumberOfStation = NumberOfStation + 1;
return id;
}
public void addstation(string name, string dvrip, string channel, string camera_Text)
{
System.Data.DataRow stationrow = CameraXdoc.DataSet.Tables["station"].NewRow();
stationrow["name"] = name;
stationrow["id"] = ((Int32)CameraXdoc.DataSet.Tables["station"].Rows[NumberOfStation - 1]["station_Id"] + 1).ToString();
CameraXdoc.DataSet.Tables["station"].Rows.Add(stationrow);
Int32 station_Id = (Int32)stationrow["station_Id"];
addcamera(dvrip, channel, camera_Text, station_Id);
NumberOfStation = NumberOfStation + 1;
{
System.Data.DataRow stationrow = CameraXdoc.DataSet.Tables["station"].NewRow();
stationrow["name"] = name;
stationrow["id"] = ((Int32)CameraXdoc.DataSet.Tables["station"].Rows[NumberOfStation - 1]["station_Id"] + 1).ToString();
CameraXdoc.DataSet.Tables["station"].Rows.Add(stationrow);
Int32 station_Id = (Int32)stationrow["station_Id"];
addcamera(dvrip, channel, camera_Text, station_Id);
NumberOfStation = NumberOfStation + 1;
}
public void editstation(string name,string id)
{
System.Data.DataRow[] drs = CameraXdoc.DataSet.Tables["station"].Select("id=" + id);
if (drs.GetLength(0) == 0) return;
else
{
for (int i = 0; i < drs.GetLength(0); i++)
{
drs[i]["name"] = name;
}
}
{
System.Data.DataRow[] drs = CameraXdoc.DataSet.Tables["station"].Select("id=" + id);
if (drs.GetLength(0) == 0) return;
else
{
for (int i = 0; i < drs.GetLength(0); i++)
{
drs[i]["name"] = name;
}
}
}
public void deletestation(string id)
{
System.Data.DataRow[] drs = CameraXdoc.DataSet.Tables["station"].Select("id=" + id);
if (drs.GetLength(0) == 0) return;
else
{
for (int i = 0; i < drs.GetLength(0); i++)
{
Int32 station_Id = (Int32)drs[i]["station_Id"];
System.Data.DataRow[] drs1= CameraXdoc.DataSet.Tables["camera"].Select("station_Id=" + station_Id);
for (int j = 0; j < drs1.GetLength(0); j++) drs1[j].Delete();
drs[i].Delete();
}
}
}
{
System.Data.DataRow[] drs = CameraXdoc.DataSet.Tables["station"].Select("id=" + id);
if (drs.GetLength(0) == 0) return;
else
{
for (int i = 0; i < drs.GetLength(0); i++)
{
Int32 station_Id = (Int32)drs[i]["station_Id"];
System.Data.DataRow[] drs1= CameraXdoc.DataSet.Tables["camera"].Select("station_Id=" + station_Id);
for (int j = 0; j < drs1.GetLength(0); j++) drs1[j].Delete();
drs[i].Delete();
}
}
}
//
//camera
//
//camera
//
public string addcamera(string dvrip, string channel, string camera_Text, Int32 station_Id)
{
System.Data.DataRow camerarow = CameraXdoc.DataSet.Tables["camera"].NewRow();
camerarow["dvrip"] = dvrip;
camerarow["channel"] = channel;
camerarow["camera_Text"] = camera_Text;
Int32 n=CameraXdoc.DataSet.Tables["camera"].Rows.Count;
Int32 tem = Int32.Parse(CameraXdoc.DataSet.Tables["camera"].Rows[n - 1]["cameraid"].ToString()) + 1;
string cameraid = (Int32.Parse(CameraXdoc.DataSet.Tables["camera"].Rows[n - 1]["cameraid"].ToString()) + 1).ToString();
camerarow["cameraid"] = cameraid;
camerarow["station_Id"] = station_Id;
CameraXdoc.DataSet.Tables["camera"].Rows.Add(camerarow);
return cameraid;
}
{
System.Data.DataRow camerarow = CameraXdoc.DataSet.Tables["camera"].NewRow();
camerarow["dvrip"] = dvrip;
camerarow["channel"] = channel;
camerarow["camera_Text"] = camera_Text;
Int32 n=CameraXdoc.DataSet.Tables["camera"].Rows.Count;
Int32 tem = Int32.Parse(CameraXdoc.DataSet.Tables["camera"].Rows[n - 1]["cameraid"].ToString()) + 1;
string cameraid = (Int32.Parse(CameraXdoc.DataSet.Tables["camera"].Rows[n - 1]["cameraid"].ToString()) + 1).ToString();
camerarow["cameraid"] = cameraid;
camerarow["station_Id"] = station_Id;
CameraXdoc.DataSet.Tables["camera"].Rows.Add(camerarow);
return cameraid;
}
public void editcamera(string dvrip, string channel, string camera_Text, string cameraid)
{
System.Data.DataRow[] drs = CameraXdoc.DataSet.Tables["camera"].Select("cameraid=" + cameraid);
if (drs.GetLength(0) == 0) return;
else
{
for (int i = 0; i < drs.GetLength(0); i++)
{
drs[i]["dvrip"] = dvrip;
drs[i]["channel"] = channel;
drs[i]["camera_Text"] = camera_Text;
}
}
}
{
System.Data.DataRow[] drs = CameraXdoc.DataSet.Tables["camera"].Select("cameraid=" + cameraid);
if (drs.GetLength(0) == 0) return;
else
{
for (int i = 0; i < drs.GetLength(0); i++)
{
drs[i]["dvrip"] = dvrip;
drs[i]["channel"] = channel;
drs[i]["camera_Text"] = camera_Text;
}
}
}
public Int32 getstation_Id(string id)
{
string temp = id.Trim();
System.Data.DataRow[] drs = CameraXdoc.DataSet.Tables["station"].Select("id="+temp);
if (drs.GetLength(0) == 0) return 0;
else
{
String tem = drs[0]["station_Id"].ToString();
return (Int32)drs[0]["station_Id"];
}
}
public void deletecamera(string cameraid)
{
System.Data.DataRow[] drs = CameraXdoc.DataSet.Tables["camera"].Select("cameraid=" + cameraid);
if (drs.GetLength(0) == 0) return;
else
{
for (int i = 0; i < drs.GetLength(0); i++)
drs[i].Delete();
}
}
{
System.Data.DataRow[] drs = CameraXdoc.DataSet.Tables["camera"].Select("cameraid=" + cameraid);
if (drs.GetLength(0) == 0) return;
else
{
for (int i = 0; i < drs.GetLength(0); i++)
drs[i].Delete();
}
}
//
//save changes
//
public void SaveChanges()
{
CameraXdoc.DataSet.AcceptChanges();
CameraXdoc.Save("cameralist.xml");
// CameraXdoc.DataSet.WriteXml("te.xml",System.Data.XmlWriteMode.DiffGram);
}
{
CameraXdoc.DataSet.AcceptChanges();
CameraXdoc.Save("cameralist.xml");
// CameraXdoc.DataSet.WriteXml("te.xml",System.Data.XmlWriteMode.DiffGram);
}
}
}
}
浙公网安备 33010602011771号