ch10_12.cs

来自「《c#技术内幕代码》」· CS 代码 · 共 131 行

CS
131
字号
using System;
using System.Xml;

public class MyObject
{
   int x;
   int y;
   double z;
   string name;

   public MyObject()
   {
      x = 10;
      y = 20;
      z = 35.5;
      name = "This is a test";
   }
   public void Save(XmlTextWriter tw)
   {
      tw.WriteStartElement("MyObject", null);
      tw.WriteAttribute("Version", "1.0");
      tw.WriteAttribute("X", x.ToString() );
      tw.WriteAttribute("Y", y.ToString() );
      tw.WriteAttribute("Z", z.ToString() );
      tw.WriteAttribute("Name", name );
   }
   public void Initialize()
   {
       x = 0;
       y = 0;
       z = 0;
       name = "";
   }
   
   public void Read(XmlTextReader reader)
   {
       double versionId = 0;
       
       
       while (reader.MoveToNextAttribute()) // Read attributes
       {
          Console.WriteLine("Attribute: {0}", reader.Name );
          if ( reader.Name == "Version" )
	  {
	     versionId = reader.Value.ToDouble();
	  }
	  if ( reader.Name == "X" )
	  {
	     x = reader.Value.ToInt16();
	  }
	  if ( reader.Name == "Y" )
	  {
	     y = reader.Value.ToInt16();
	  }
	  if ( reader.Name == "Z" )
	  {
	     z = reader.Value.ToDouble();
	  }
	  if ( reader.Name == "Name" )
	  {
	     name = reader.Value;
	  }
       }
   }
   public void Dump()
   {
      Console.WriteLine("X = {0}", x );
      Console.WriteLine("Y = {0}", y );
      Console.WriteLine("Z = {0}", z );
      Console.WriteLine("Name = {0}", name );
   }
}

public class CH10_10
{
   public static void Main(string[] args)
   {
        if ( args[0] == "Write") 
	{
           // Create an XML writer.
           XmlTextWriter myXmlTextWriter = new XmlTextWriter ("ch10_12.xml", null);
	
           // Write the header
           myXmlTextWriter.Formatting = Formatting.Indented;
           myXmlTextWriter.WriteStartDocument(false);
           myXmlTextWriter.WriteDocType("ch10_12", null, null, null);
           myXmlTextWriter.WriteComment("Save Some Objects");
	
	
           // Create an object
   	   MyObject myO = new MyObject();
  	   myO.Save( myXmlTextWriter );
	
           // Commit the data
           myXmlTextWriter.Flush();
           myXmlTextWriter.Close();
	}
	else
	   if ( args[0] == "Read" )
	   {
              XmlTextReader reader = new XmlTextReader (args[1]);
      
              while (reader.Read())
              {
                  switch (reader.NodeType)
                  {
                     case XmlNodeType.Element: // The node is an Element
	                if ( reader.Name == "MyObject") 
	                {
	                   MyObject mo = new MyObject();
			   mo.Initialize();
			   mo.Dump(); // To show it is empty
		           mo.Read( reader );
			   mo.Dump();
	                }
                        break;
                     case XmlNodeType.DocumentType: // The node is a DocumentType
                        Console.WriteLine("Document: " + reader.Value);
                        break;
                     case XmlNodeType.Comment:
 	                Console.WriteLine("Comment: " + reader.Value);
  	                break;
                  }
              }
      
              reader.Close();
	   }
   }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?