XML文档的写入可以通过类XmlWriter实现。XmlWriter类是一个抽象基类,利用只进、只写、非缓存的方式来生成XML流。可以用于构建符合W3C可扩展标记语言(XML)1.0建议和XML中的命名空间建议的XML文档。
XmlWriter实例使用静态System.Xml.XmlWriter.Create方法创建。XmlWriter实例使用Create方法创建。XmlWriterSettings类用于指定要在新的XmlWriter对象上启用的功能集。使用XmlWriterSettings类的属性启用或禁用功能。通过将XmlWriterSettings对象传递给Create方法,指定要支持的写入器功能。
下面介绍一个实例,使用XmlWriter类创建一个简单的XML文档。
创建一个Windows控制台应用程序,演示创建XML文档的方法。
(1)创建一个名为XmlWrite的控制台应用程序项目。
(2)修改Program.cs文件的内容如下:
namespace XmlWrite
{
class Program
{
static void Main(string[] args)
{
//XML文件路径
string path = @"c:\new.xml";
//尝试读取该XML文件
try
{
//创建设置
XmlWriterSettings mySettings = new XmlWriterSettings();
mySettings.Indent = true;
mySettings.IndentChars = (" ");
//创建XmlWriter的实例
XmlWriter myWriter = XmlWriter.Create(path, mySettings);
// 输入XML数据
myWriter.WriteStartElement("people");
myWriter.WriteElementString("name", "zhang");
myWriter.WriteEndElement();
myWriter.Flush();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
图11-7 运行结果1
|
}
}
}
按Ctrl+F5组合键运行程序,运行结果如图11-7所示。
可以看到,成功地创建了XML文档。查看位于C盘根目录的new.xml文件,如图11-8所示。
图11-8 运行结果2
WriteAttributeString、WriteStartAttribute和WriteAttributes方法专门为创建属性而设计。使用这些方法可以为元素或XML声明节点编写属性。编写属性的方法也可以用于为元素创建命名空间声明。WriteAttributeString方法是编写属性最简单的方式,该方法用于编写整个属性节点,包括字符串值。下面介绍一个实例,演示如何向XML文档中写入属性。
创建一个Windows控制台应用程序,演示创建XML文档的方法。
(1)创建一个名为PropWrite的控制台应用程序项目。
(2)修改Program.cs文件的内容如下:
namespace PropWrite
{
class Program
{
static void Main(string[] args)
{
//XML文件路径
string path = @"c:\new.xml";
//尝试读取该XML文件
try
{
//创建设置
XmlWriterSettings mySettings = new XmlWriterSettings();
mySettings.Indent = true;
mySettings.IndentChars = (" ");
//创建XmlWriter的实例
XmlWriter myWriter = XmlWriter.Create(path, mySettings);
// 输入XML数据
myWriter.WriteStartElement("people");
myWriter.WriteAttributeString("age", "20");
myWriter.WriteElementString("name", "zhang");
myWriter.WriteEndElement();
myWriter.Flush();
Console.WriteLine("XML文档创建成功!");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
图11-9 运行结果1
|
}
}
}
按Ctrl+F5组合键运行程序,运行结果如图11-9所示。
可以看到,成功地创建了XML文档。查看位于C盘根目录的new.xml文件,如图11-10所示。
图11-10 运行结果2
WriteStartElement方法是WriteAttributeString方法更高级的版本,它可以使用多个方法调用编写属性值。例如,可以使用WriteValue编写类型化值。通过调用WriteEndAttribute方法来关闭该属性。利用如下实例演示了另外一种属性的写入方法。
创建一个Windows控制台应用程序,演示写入XML文档属性的方法。
(1)创建一个名为AdvPropWrite的控制台应用程序项目。
(2)修改Program.cs文件的内容如下:
namespace AdvPropWrite
{
class Program
{
static void Main(string[] args)
{
//XML文件路径
string path = @"c:\new.xml";
//尝试读取该XML文件
try
{
//创建设置
XmlWriterSettings mySettings = new XmlWriterSettings();
mySettings.Indent = true;
mySettings.IndentChars = (" ");
//创建XmlWriter的实例
XmlWriter myWriter = XmlWriter.Create(path, mySettings);
// 输入XML数据
myWriter.WriteStartElement("people");
myWriter.WriteStartAttribute("nation");
myWriter.WriteValue("chinese");
myWriter.WriteEndAttribute();
myWriter.WriteElementString("name", "zhang");
myWriter.WriteEndElement();
myWriter.Flush();
Console.WriteLine("属性写入成功!");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}
按Ctrl+F5组合键运行程序,运行结果如图11-11所示。
可以看到,成功地创建了XML文档。查看位于C盘根目录的new.xml文件,如图11-12所示。
图11-11 运行结果1 图11-12 运行结果2
WriteElementString、WriteStartElement和WriteNode方法可以用于编写元素节点。WriteElementString用于编写整个元素节点,包括字符串值。下面介绍一个实例,演示写入XML文档元素的方法。
创建一个Windows控制台应用程序,演示写入XML文档元素的方法。
(1)创建一个名为NodeWrite的控制台应用程序项目。
(2)修改Program.cs文件的内容如下:
namespace NodeWrite
{
class Program
{
static void Main(string[] args)
{
//XML文件路径
string path = @"c:\new.xml";
//尝试读取该XML文件
try
{
//创建设置
XmlWriterSettings mySettings = new XmlWriterSettings();
mySettings.Indent = true;
mySettings.IndentChars = (" ");
//创建XmlWriter的实例
XmlWriter myWriter = XmlWriter.Create(path, mySettings);
// 输入XML数据
myWriter.WriteStartElement("people");
myWriter.WriteElementString("name", "zhang");
myWriter.WriteElementString("nation", "china");
myWriter.WriteEndElement();
myWriter.Flush();
Console.WriteLine("元素写入成功!");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}
图11-13 运行结果1
|
按Ctrl+F5组合键运行程序,运行结果如图11-13所示。
可以看到,XML文档被成功地创建。查看位于C盘根目录的new.xml文件,如图11-14所示。
图11-14 运行结果2
使用WriteNode方法可以复制在提供的XmlReader或XPathNavigator对象的当前位置发现的整个元素节点。调用时,会将源对象中的所有内容复制到XmlWriter实例。
下面介绍的实例演示了WriteNode的方法。
创建一个Windows控制台应用程序,演示写入XML文档元素的方法。
(1)创建一个名为AdvNodeWrite的控制台应用程序项目。
(2)修改Program.cs文件的内容如下:
namespace AdvWriteNode
{
class Program
{
static void Main(string[] args)
{
//XML文件路径
string path = @"c:\new.xml";
string oldPath = @"c:\test.xml";
//尝试读取该XML文件
try
{
//创建设置
XmlWriterSettings mySettings = new XmlWriterSettings();
mySettings.Indent = true;
mySettings.IndentChars = (" ");
// 输入XML数据
XmlReader myReader = XmlReader.Create(oldPath);
myReader.ReadToDescendant("mail");
//创建XmlWriter的实例
XmlWriter myWriter = XmlWriter.Create(path);
myWriter.WriteNode(myReader, true);
myWriter.Flush();
Console.WriteLine("元素写入成功!");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}
按Ctrl+F5组合键运行程序,运行结果如图11-15所示。
可以看到,XML文档被成功地创建。查看位于C盘根目录的new.xml文件,如图11-16所示。
图11-15 运行结果1 图11-16 运行结果2