参考http://www.cnblogs.com/fish-li/archive/2013/05/05/3061816.html

我们可以直接使用XmlTextReader、XmlDocument、XPath来取数XML中的数据, 也可以使用LINQ TO XML或者反序列化的方法从XML中读写数据,我各人比较喜欢序列化、反序列化方法。

1、默认情况下,不添加任何属性标签的对象属性都序列化为一个节点。如下一个Student对象序列化结果如下:

  1. public class Student
  2. {
  3. public string Name { get; set; }//属性无任何修饰都序列化为Element
  4.  
  5. public string Sex { get; set; }
  6.  
  7. public int Age { get; set; }
  8. }
  9. Student stu = new Student()
  10. {
  11. Name = "LiLei",
  12. Age = ,
  13. Sex = "男"
  14. };
  15. string xml= XmlHelper.XmlSerialize(stu, Encoding.UTF8);//序列化

序列化结果如下:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Student xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  3. <Name>LiLei</Name>
  4. <Sex></Sex>
  5. <Age>25</Age>
  6. </Student>

2、使用XmlAttribute修饰类属性,则对应属性序列化为节点属性

  1. using System.Xml.Serialization;
  2.  
  3. namespace Entity
  4. {
  5. public class Student
  6. {
  7. [XmlAttribute]
  8. public string Name { get; set; }
  9. [XmlAttribute]
  10. public string Sex { get; set; }
  11. [XmlAttribute]
  12. public int Age { get; set; }
  13. }
  14. }
  15.  
  16. Student stu = new Student()
  17. {
  18. Name = "LiLei",
  19. Age = ,
  20. Sex = "男"
  21. };
  22. string xml= XmlHelper.XmlSerialize(stu, Encoding.UTF8);

序列化结果:

  1. <!--被XmlAttribute修饰的类属性都序列化为Xml节点属性-->
    <?xml version="1.0" encoding="utf-8"?>
  2. <Student xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Name="LiLei" Sex="男" Age="25" />

3、使用XmlText修饰为xml节点InnerText

  1. public class Student
  2. {
  3. [XmlText]
  4. public string Name { get; set; }
  5.  
  6. [XmlAttribute]
  7. public string Sex { get; set; }
  8.  
  9. [XmlAttribute]
  10. public int Age { get; set; }
  11. }
  12.  
  13. Student stu = new Student()
  14. {
  15. Name = "LiLei",
  16. Age = ,
  17. Sex = "男"
  18. };
  19. string xml= XmlHelper.XmlSerialize(stu, Encoding.UTF8);

序列化结果

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Student xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Sex="男" Age="25">
      LiLei
    </Student>

4、重命名

属性:[XmlAttribute("别名")]

元素节点:[XmlElement("别名")]

列表元素节点:[XmlArrayItem("别名")]

列表元素自身:[XmlArray("别名")]

类型即根节点:[XmlType("别名")]或[XmlRoot("别名")]

  1. [XmlType("Stu")]
    public class Student
  2. {
  3. [XmlElement("Name")]//重命名为Name
  4. public string StudentName { get; set; }
  5.  
  6. [XmlAttribute("Sex")]//重命名为Sex
  7. public string StudentSex { get; set; }
  8.  
  9. [XmlAttribute]
  10. public int Age { get; set; }
  11. }
  12. Student stu = new Student()
  13. {
  14. StudentName = "LiLei",
  15. Age = ,
  16. StudentSex = "男"
  17. };
  18. string xml= XmlHelper.XmlSerialize(stu, Encoding.UTF8);

序列化结果:

  1. <Stu xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Sex="男" Age="25">
  2. <Name>LiLei</Name>
  3. </Stu>

5、列表和数组在序列

  1. 例如:
  2. public class Student
  3. {
  4. [XmlElement("Name")]
  5. public string StudentName { get; set; }
  6.  
  7. [XmlAttribute("Sex")]
  8. public string StudentSex { get; set; }
  9.  
  10. [XmlAttribute]
  11. public int Age { get; set; }
  12. }
  13. List<Student> stu_list = new List<Student>() {
  14. new Student() { StudentName = "Lily", Age = , StudentSex = "女" },
  15. new Student() { StudentName = "Hanmeimei", Age = , StudentSex = "女" },
  16. new Student() { StudentName = "Linda", Age = , StudentSex = "女" },
  17. };
  18.  
  19. string xml = XmlHelper.XmlSerialize(stu_list, Encoding.UTF8);

序列化xml结果为:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <ArrayOfStudent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  3. <Student Sex="女" Age="19">
  4. <Name>Lily</Name>
  5. </Student>
  6. <Student Sex="女" Age="21">
  7. <Name>Hanmeimei</Name>
  8. </Student>
  9. <Student Sex="女" Age="19">
  10. <Name>Linda</Name>
  11. </Student>
  12. </ArrayOfStudent>

该结果的根节点显然不大友好,为此可以重新定义一个新类型,例如:

  1. [XmlRoot("Students")]
  2. public class StudentList : List<Student> { }
  3.  
  4. StudentList stulist = new StudentList() {
  5. new Student() { StudentName = "Lily", Age = , StudentSex = "女" },
  6. new Student() { StudentName = "Hanmeimei", Age = , StudentSex = "女" },
  7. new Student() { StudentName = "Linda", Age = , StudentSex = "女" }
  8. };
  9.  
  10. string xml = XmlHelper.XmlSerialize(stulist, Encoding.UTF8);

序列化为Xml结果如下:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  3. <Student Sex="女" Age="19">
  4. <Name>Lily</Name>
  5. </Student>
  6. <Student Sex="女" Age="21">
  7. <Name>Hanmeimei</Name>
  8. </Student>
  9. <Student Sex="女" Age="19">
  10. <Name>Linda</Name>
  11. </Student>
  12. </Students>

6、类成员为数组或列表的序列化

注意:数组和列表都在序列化时,默认情况下会根据类型中的数据成员名称生成一个节点, 列表项会生成子节点,如果要重命名,可以使用[XmlArrayItem]和[XmlArray]来实现。 还可以直接用[XmlElement]控制不生成列表的父节点

例如:

  1. public class QueClient
  2. {
  3. public string IP { get; set; }
  4.  
  5. public int LocalPort{ get; set; }
  6.  
  7. public List<Queue> Queues { get; set; }
  8.  
  9. }
  10.  
  11. public class Queue
  12. {
  13. [XmlAttribute("Name")]
  14. public string QueueName { get; set; }
  15. [XmlAttribute("Id")]
  16. public string QueueId { get; set; }
  17. [XmlAttribute("Prefix")]
  18. public string QuePrefix { get; set; }
  19.  
  20. }
  21.  
  22. List<Queue> quelist = new List<Queue>()
  23. {
  24. new Queue() {QueueName="金卡",QueueId="A",QuePrefix="A" },
  25. new Queue() {QueueName="普卡",QueueId="B",QuePrefix="B" },
  26. new Queue() {QueueName="葵花卡",QueueId="C",QuePrefix="C" },
  27. };
  28. QueClient queClient = new QueClient() {
  29. IP ="99.12.53.71",
  30. LocalPort =,
  31. Queues =quelist
  32. };
  33.  
  34. string xml = XmlHelper.XmlSerialize(queClient, Encoding.UTF8);

序列化结果:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <QueClient xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  3. <IP>99.12.53.71</IP>
  4. <LocalPort>88</LocalPort>
  5. <Queues>
  6. <Queue Name="金卡" Id="A" Prefix="A" />
  7. <Queue Name="普卡" Id="B" Prefix="B" />
  8. <Queue Name="葵花卡" Id="C" Prefix="C" />
  9. </Queues>
  10. </QueClient>

假如QueClient成员Queues(是列表类型)机该列表节点名需重名,即Queues节点与Queue节点需要重名,只需修改QueueClient,如下:

  1. public class QueClient
  2. {
  3. public string IP { get; set; }
  4.  
  5. public int LocalPort{ get; set; }
  6.  
  7. [XmlArrayItem("Que")]//重命名列表节点名称
  8. [XmlArray("Ques")]//重命名列表根节点名称
  9. public List<Queue> Queues { get; set; }
  10.  
  11. }
  12.  
  13. List<Queue> quelist = new List<Queue>()
  14. {
  15. new Queue() {QueueName="金卡",QueueId="A",QuePrefix="A" },
  16. new Queue() {QueueName="普卡",QueueId="B",QuePrefix="B" },
  17. new Queue() {QueueName="葵花卡",QueueId="C",QuePrefix="C" },
  18. };
  19. QueClient queClient = new QueClient() {
  20. IP ="99.12.53.71",
  21. LocalPort =,
  22. Queues =quelist
  23. };
  24.  
  25. string xml = XmlHelper.XmlSerialize(queClient, Encoding.UTF8);

序列化结果如下:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <QueClient xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  3. <IP>99.12.53.71</IP>
  4. <LocalPort>88</LocalPort>
  5. <Ques>
  6. <Que Name="金卡" Id="A" Prefix="A" />
  7. <Que Name="普卡" Id="B" Prefix="B" />
  8. <Que Name="葵花卡" Id="C" Prefix="C" />
  9. </Ques>
  10. </QueClient>

7、类继承与反序列化

列表元素可以是同一种类型,也可以不是同一种类型(某个类型的派生类)

例如:思考如何反序列化

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <XRoot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  3. <List>
  4. <X1 aa="1" bb="2" />
  5. <X1 aa="3" bb="4" />
  6. <x2>
  7. <cc>ccccccccccccccccc</cc>
  8. <dd>dddddddddd</dd>
  9. </x2>
  10. </List>
  11. </XRoot>

思想:列表里不同类型的继承同一个父类且同时为列表成员指定多个[XmlArrayItem(typeof(XXX))]可实现多种派生类型混在一起输出。最后反序列化结果如下:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Xml.Serialization;
  4.  
  5. namespace Entity
  6. {
  7. public class XBase { }
  8.  
  9. [XmlRoot("x1")]
  10. public class X1 : XBase
  11. {
  12. [XmlAttribute("aa")]
  13. public String AA { get; set; }
  14. [XmlAttribute("bb")]
  15. public string BB { get; set; }
  16.  
  17. }
  18.  
  19. [XmlType("x2")]
  20. public class X2 : XBase
  21. {
  22. [XmlElement("cc")]
  23. public string CC { get; set; }
  24. [XmlElement("dd")]
  25. public string DD { get; set; }
  26. }
  27.  
  28. public class XRoot
  29. {
  30. [XmlArrayItem(typeof(X1))]//注意此处指出节点类型两个X1,X2
  31. [XmlArrayItem(typeof(X2))]//注意此处指出节点类型两个X1,X2
  32. public List<XBase> List { get; set; }
  33. }
  34. }

例如:反序列化如下xml内容:

  1. <DynamicHelp xmlns="http://msdn.microsoft.com/vsdata/xsd/vsdh.xsd"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://msdn.microsoft.com/vsdata/xsd/vsdh.xsd vsdh.xsd">
  4. <LinkGroup ID="sites" Title="Venus Sites" Priority="1500">
  5. <Glyph Collapsed="3" Expanded="4"/>
  6. </LinkGroup>
  7. <LinkGroup ID="Venus Private Forums" Title="Venus Private Forums" Priority="1400">
  8. <Glyph Collapsed="3" Expanded="4"/>
  9. </LinkGroup>
  10. <LinkGroup ID="ASP.NET Forums" Title="ASP.NET 1.0 Public Forums" Priority="1200">
  11. <Glyph Collapsed="3" Expanded="4"/>
  12. </LinkGroup>
  13. <Context>
  14. <Links>
  15. <LItem URL="http://www.asp.net/venus" LinkGroup="sites">Venus Home Page</LItem>
  16. <LItem URL="http://www.asp.net" LinkGroup="sites">ASP.NET Home Page</LItem>
  17. <LItem URL="http://www.asp.net/Forums/ShowForum.aspx?tabindex=1&amp;ForumID=77"
  18. LinkGroup="Venus Private Forums">General Discussions</LItem>
  19. <LItem URL="http://www.asp.net/Forums/ShowForum.aspx?tabindex=1&amp;ForumID=83"
  20. LinkGroup="Venus Private Forums">Feature Requests</LItem>
  21. <LItem URL="http://www.asp.net/Forums/ShowForum.aspx?tabindex=1&amp;ForumID=78"
  22. LinkGroup="Venus Private Forums">Bug Reports</LItem>
  23. <LItem URL="http://www.asp.net/Forums/ShowForum.aspx?tabindex=1&amp;ForumID=86"
  24. LinkGroup="Venus Private Forums">ASP.NET 2.0 Related issues</LItem>
  25. <LItem URL="http://www.asp.net/Forums/ShowForum.aspx?tabindex=1&amp;ForumID=11"
  26. LinkGroup="ASP.NET Forums">Announcements</LItem>
  27. <LItem URL="http://www.asp.net/Forums/ShowForum.aspx?tabindex=1&amp;ForumID=15"
  28. LinkGroup="ASP.NET Forums">Getting Started</LItem>
  29. <LItem URL="http://www.asp.net/Forums/ShowForum.aspx?tabindex=1&amp;ForumID=18"
  30. LinkGroup="ASP.NET Forums">Web Forms</LItem>
  31. </Links>
  32. </Context>
  33. </DynamicHelp>

反序列化为:

  1. using System.Collections.Generic;
  2. using System.Xml.Serialization;
  3.  
  4. namespace Entity
  5. {
  6. [XmlRoot(Namespace = "http://msdn.microsoft.com/vsdata/xsd/vsdh.xsd")]//注意此处与xml内容一致,xml内容有空间限定时类定义也需添加
  7. public class DynamicHelp
  8. {
  9. [XmlElement]//注意此处
  10. public List<LinkGroup> Groups { get; set; }
  11.  
  12. public Context Context { get; set; }
  13. }
  14.  
  15. public class LinkGroup {
  16. [XmlAttribute]
  17. public string ID { get; set; }
  18. [XmlAttribute]
  19. public string Title { get; set; }
  20. [XmlAttribute]
  21. public int Priority { get; set; }
  22.  
  23. public Glyph Glyph { get; set; }
  24. }
  25.  
  26. public class Glyph
  27. {
  28. [XmlAttribute]
  29. public int Collapsed { get; set; }
  30. [XmlAttribute]
  31. public int Expanded { get; set; }
  32. }
  33.  
  34. public class LItem
  35. {
  36. [XmlAttribute]
  37. public string URL { get; set; }
  38. [XmlAttribute]
  39. public string LinkGroup { get; set; }
  40.  
  41. [XmlText]
  42. public string Title { get; set; }
  43. }
  44.  
  45. public class Context {
  46. public List<LItem> Links { get; set; }
  47. }
  48. }

8、不需要序列化的属性: [XmlIgnore]

  1. public class QueClient
  2. {
  3. public string IP { get; set; }
  4. public int LocalPort{ get; set; }
  5. [XmlIgnore]
  6. public int LocalPort2{ get; set; }
  7. [XmlElement]
  8. public List<Queue> Queues { get; set; }
  9.  
  10. }

9、指定类成员序列化顺序[XmlElement(Order<= 顺序数字)]

例如:

  1. public class QueClient
  2. {
  3. [XmlElement(Order =)]//设置序列化顺序
  4. public string IP { get; set; }
  5.  
  6. public int LocalPort{ get; set; }
  7.  
  8. [XmlIgnore]
  9. public int LocalPort2{ get; set; }
  10.  
  11. [XmlElement]
  12. public List<Queue> Queues { get; set; }
  13.  
  14. }

10、序列化去掉命名空间及声明

  1. private static void XmlSerializeInternal(Stream stream,object obj,Encoding encoding)
  2. {
  3. if (obj == null)
  4. throw new ArgumentNullException("object");
  5. if(encoding==null)
  6. throw new ArgumentNullException("object");
  7. XmlSerializer serializer = new XmlSerializer(obj.GetType());
  8.  
  9. XmlWriterSettings settings = new XmlWriterSettings();
  10. settings.Indent = true;
  11. settings.NewLineChars = "\r\n";
  12. settings.Encoding = encoding;
  13. settings.IndentChars = " ";
  14. //设置忽略声明空间
  15. settings.OmitXmlDeclaration = true;
  16. // 强制指定命名空间,覆盖默认的命名空间。
  17. XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
  18. namespaces.Add(string.Empty, string.Empty);
  19.  
  20. using (XmlWriter writer=XmlWriter.Create(stream, settings))
  21. {
  22. serializer.Serialize(writer, obj,namespaces);
  23. }
  24. }

11、自定义序列化行为

假如如下代码序列化:

  1. public class TestClass
  2. {
  3. public string StrValue { get; set; }
  4.  
  5. public List<int> List { get; set; }
  6. }
  7.  
  8. public class ClassB1
  9. {
  10. public TestClass Test { get; set; }
  11. }
  12.  
  13. TestClass test = new TestClass {
  14. StrValue = "Fish Li",
  15. List = new List<int> { , , , , }
  16. };
  17. ClassB1 b1 = new ClassB1 { Test = test };
  18. string xmbll = XmlHelper.XmlSerialize(b1, Encoding.UTF8);

序列化结果:

  1. <ClassB1>
  2. <Test>
  3. <StrValue>Fish Li</StrValue>
  4. <List>
  5. <int>1</int>
  6. <int>2</int>
  7. <int>3</int>
  8. <int>4</int>
  9. <int>5</int>
  10. </List>
  11. </Test>
  12. </ClassB1>

但实际需求是序列化为如下:

  1. <ClassB1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  2. <Test s="Fish Li">1,2,3,4,5</Test>
  3. </ClassB1>

此时只需要对需要特殊序列化的类进行重定义,即该类实现IXmlSerializable重写ReadXml与WriteXml方法

  1. public class TestClass: IXmlSerializable
  2. {
  3. public string StrValue { get; set; }
  4.  
  5. public List<int> List { get; set; }
  6.  
  7. public XmlSchema GetSchema()
  8. {
  9. return null;
  10. }
  11.  
  12. public void ReadXml(XmlReader reader)
  13. {
  14. StrValue = reader.GetAttribute("s");
  15. string numbers = reader.ReadString();
  16. if(string.IsNullOrWhiteSpace(numbers)==false)
  17. List = (from s in numbers.Split(new char[] {','}, StringSplitOptions.RemoveEmptyEntries)
  18. let n = int.Parse(s)
  19. select n).ToList();
  20. }
  21.  
  22. public void WriteXml(XmlWriter writer)
  23. {
  24. writer.WriteAttributeString("s", StrValue);
  25. writer.WriteString(string.Join(",", List.ConvertAll<string>(x => x.ToString()).ToArray()));
  26. }
  27. }

net中序列化读写xml的更多相关文章

  1. 在.net中序列化读写xml方法的总结

    在.net中序列化读写xml方法的总结 阅读目录 开始 最简单的使用XML的方法 类型定义与XML结构的映射 使用 XmlElement 使用 XmlAttribute 使用 InnerText 重命 ...

  2. C#_在.net中序列化读写xml方法的总结

    阅读目录 开始 最简单的使用XML的方法 类型定义与XML结构的映射 使用 XmlElement 使用 XmlAttribute 使用 InnerText 重命名节点名称 列表和数组的序列化 列表和数 ...

  3. (转)在.net中序列化读写xml方法的总结

    阅读目录 开始 最简单的使用XML的方法 类型定义与XML结构的映射 使用 XmlElement 使用 XmlAttribute 使用 InnerText 重命名节点名称 列表和数组的序列化 列表和数 ...

  4. 在.net中序列化读写xml方法的总结--转载过来学习学习

    原文章地址:http://www.cnblogs.com/fish-li/archive/2013/05/05/3061816.html 首先做个大概的总结,XML包括的元素有XmlElement,X ...

  5. 在.net中序列化读写xml方法

    收集XML的写法 XML是一种很常见的数据保存方式,我经常用它来保存一些数据,或者是一些配置参数. 使用C#,我们可以借助.net framework提供的很多API来读取或者创建修改这些XML, 然 ...

  6. C#中XmlTextWriter读写xml文件详细介绍

    XmlTextWriter类允许你将XML写到一个文件中去.这个类包含了很多方法和属性,使用这些属性和方法可以使你更容易地处理XML.为了使用这个类,你必须首先创建一个新的XmlTextWriter对 ...

  7. C#中XmlTextWriter读写xml文件详细介绍(转)

    转自http://www.jb51.net/article/35230.htm   .NET中包含了很多支持XML的类,这些类使得程序员使用XML编程就如同理解XML文件一样简单.在这篇文章中,我将给 ...

  8. UE4使用第三方库读写xml文件

    原文链接:http://gad.qq.com/article/detail/7181031 本文首发腾讯GAD开发者平台,未经允许,不得转载 在游戏开发过程中,读写xml几乎已经成为不可或缺的功能,但 ...

  9. VC 使用msxml6.dll动态链接库中的函数读写XML文件

    VC 使用msxml6.dll动态链接库中的函数读写XML文件 目录 1 引言 2 .dll使用方法 3 常用函数总结 4 实例应用 5 运行效果预览 6 补充说明 7 不足之处 8 更新   引言: ...

随机推荐

  1. Android中悬浮窗口

    调用WindowManager,并设置WindowManager.LayoutParams的相关属性,通过WindowManager的addView方法创建View,这样产生出来的View根据Wind ...

  2. NA

    0000-00001000-0000 1111-1111 1*2^7=1281*2^6=641*2^5=321*2^4=161*2^3=81*2^2=41*2^1=21*2^0=1 0000-0010 ...

  3. Pandas将中文数据集转换为数值类别型数据集

    一个机器学习竞赛中,题目大意如下,本文主要记录数据处理过程,为了模型训练,第一步需要将中文数据集处理为数值类别数据集保存. 基于大数据的运营商投诉与故障关联分析 目标:原始数据集是含大量中文的xls格 ...

  4. (顺序表的应用5.4.3)POJ 1012(约瑟夫环问题——保证前k个出队元素为后k个元素)

    /* * POJ-1012.cpp * * Created on: 2013年10月31日 * Author: Administrator */ #include <iostream> # ...

  5. css样式控制鼠标滑过显示

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. Spark 1.1.0 编译(为了支持hbase 0.98.6)

    为了支持hbase0.98.6,需要重新编译spark 1. 下载spark 1.1.0源代码,以及 scala-2.10.4的bin包. 将环境变量 SCALA_HOME 设置为 scala-2.1 ...

  7. sublime 使用技巧

    使用sublime使遇到的问题: 1.左侧菜单栏隐藏恢复:View ->Side Bar ->Show Side Bar 2.顶部菜单栏隐藏恢复:按住ctrl+shift+p,出现一个框, ...

  8. [问题2014A06] 复旦高等代数 I(14级)每周一题(第八教学周)

    [问题2014A06]  若 \(n\) 阶实方阵 \(A\) 满足 \(AA'=I_n\), 则称为正交矩阵. 证明: 不存在 \(n\) 阶正交矩阵 \(A,B\) 满足 \(A^2=cAB+B^ ...

  9. 十六、Swing高级组件

    1.利用JTable类直接创建表格 (1)创建表格 构造方法:JTable(Object rowData,Object[] columnNames) (2)定制表格 编辑:isCellEditable ...

  10. 【转】CentOS下载版本介绍

    官网:http://www.centos.org/ 下载:http://mirror.neu.edu.cn/centos/6.6/isos/ 系统运维:http://www.osyunwei.com/ ...