linq to xml 中SaveOptions和LoadOptions的介绍

一、介绍保存的时候用到的Save()的参数SaveOptions枚举

在LINQ to XML中保存XML数据到文件,只需要通过XElement类的Save()方法即可,该方法具有多个重载版本,可以将XML数据保存到文件和流。定义如下:

  1. public void Save(string fileName);  
  2. public void Save(TextWriter textWriter);  
  3. public void Save(XmlWriter writer);  
  4. public void Save(string fileName, SaveOptions options);  
  5. 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

  1. static void SaveElement( )  
  2. {  
  3.     //首先创建一个XML元素userList  
  4.     XElement userList = new XElement("UserList",  
  5.                 new XAttribute("Count", 1),  
  6.                 new XElement("User",  
  7.                              new XAttribute("ID", "001"),  
  8.                              new XElement("Name", "张三")));  
  9.     //保存数据到文件UserListFormatted.XML  
  10.     userList.Save(@"C:\UserListFormatted.XML", SaveOptions.DisableFormatting);  
  11.     //保存数据到文件UserListNone.XML  
  12.     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结构是什么样子就加载成什么样子



原文地址:https://www.cnblogs.com/wang726zq/p/2423828.html