After The End

通过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>
   篇幅原因只设置了一个站点。

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");        …………

3)xml文件的操作:
using System;
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()
          
{
          }
          //
          
//初始化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;
          }
          //
          
//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;
          }
          public void editstation(string name,string id)
          
{
              System.Data.DataRow[] drs 
= CameraXdoc.DataSet.Tables["station"].Select("id=" + id);
              
if (drs.GetLength(0== 0return;
              
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== 0return;
              
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
          
//          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;
          }
          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== 0return;
              
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== 0return 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== 0return;
              
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);
          }
      }

}

posted on 2007-05-18 20:00  zhanjh  阅读(376)  评论(0)    收藏  举报

导航