一、介绍保存的时候用到的Save()的参数SaveOptions枚举
在LINQ to XML中保存XML数据到文件,只需要通过XElement类的Save()方法即可,该方法具有多个重载版本,可以将XML数据保存到文件和流。定义如下:
- public void Save(string fileName);
- public void Save(TextWriter textWriter);
- public void Save(XmlWriter writer);
- public void Save(string fileName, SaveOptions options);
- public void Save(TextWriter textWriter, SaveOptions options);
其中,fileName表示XML元素要保存的文件名,textWriter和writer表示XML元素保存的文件流,options参数表示保存XML数据时使用的格式,是SaveOptions类型,包括如下选项。
None:保存XML数据时按照元素结构进行格式化,具有缩进,去除空格等对齐格式的好处,更加易读。
DisableFormatting:即可以把所有的xml节点压缩到一行显示,不便于阅读。
示例代码17-18演示如何通过Save()保存XML数据到文件。首先创建一个简单的XML元素userList,然后通过Save()方法用不同的SaveOptions进行保存。
示例代码17-18
- static void SaveElement( )
- {
- //首先创建一个XML元素userList
- XElement userList = new XElement("UserList",
- new XAttribute("Count", 1),
- new XElement("User",
- new XAttribute("ID", "001"),
- new XElement("Name", "张三")));
- //保存数据到文件UserListFormatted.XML
- userList.Save(@"C:\UserListFormatted.XML", SaveOptions.DisableFormatting);
- //保存数据到文件UserListNone.XML
- userList.Save(@"C:\UserListNone.XML", SaveOptions.None);
- }
执行完成示例代码17-18之后,可以可以总结:用SaveOptions.None保存XML数据时,生成的XML文档具有缩进,去除空格等对齐格式的好处,更加易读。
相反,用SaveOptions.DisableFormatting保存的XML文档没有任何空白,所有元素都直接连接到一行,不便于阅读。
//保存数据到文件UserListFormatted.XML
<?xml version="1.0" encoding="utf-8"?><UserList Count="1"><User ID="001" Name="张三"></User></UserList>
//保存数据到文件UserListNone.XML
<?xml version="1.0" encoding="utf-8"?>
<UserList Count="1">
<User ID="001" Name="张三"></User>
</UserList>
默认使用SaveOptions.None
一、介绍保存的时候用到的Load()的参数LoadOptions枚举(主要讲解PreserveWhitespace和None)
在LINQ to XML中加载XML数据到文件,只需要通过XDocument类和XElement类的Load()方法和Parse即可,该方法具有多个重载版本,定义如下:
Parse()方法是:从字符串创建新 XDocument和XElement对象
实例:19-20
string text="
<?xml version='1.0' encoding='utf-8'?>
<ArrayOfUserInfo >
<UserInfo UserID='2'>
<UserName>张三</UserName>
<UserSex>男</UserSex>
<UserPhone ID='2'>
<电话>33333333</电话>
<手机>44444444</手机>
</UserPhone>
</UserInfo>
</ArrayOfUserInfo>";
XDocument xdoc=XDocument.Parse(text,LoadOptions.PreserveWhitespace);
输出:
<?xml version='1.0' encoding='utf-8'?>
<ArrayOfUserInfo >
<UserInfo UserID='2'>
<UserName>张三</UserName>
<UserSex>男</UserSex>
<UserPhone ID='2'>
<电话>33333333</电话>
<手机>44444444</手机>
</UserPhone>
</UserInfo>
</ArrayOfUserInfo>
XDocument xdoc=XDocument.Parse(text,LoadOptions.None);
输出:
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfUserInfo>
<UserInfo UserID="2">
<UserName>张三</UserName>
<UserSex>男</UserSex>
<UserPhone ID="2">
<电话>33333333</电话>
<手机>44444444</手机>
</UserPhone>
</UserInfo>
</ArrayOfUserInfo>
由上可以看出LoadOptions.PreserveWhitespace输出在<ArrayOfUserInfo >和<UserInfo UserID='2'>之间有个空行,保留了空行
而LoadOptions.None输出在<ArrayOfUserInfo >和<UserInfo UserID='2'>之间没有空行,自动移除了不需要的空行
总结:
None:加载XML数据时对元素结构进行格式化,具有缩进,去除空格等对齐格式的好处,更加易读。
PreserveWhitespace:加载XML数据时保留所有无关紧要的空白,XML结构是什么样子就加载成什么样子。