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 + -
显示快捷键?