none
如何将保存collection里的数据写到XML文件里呢? RRS feed

  • 问题

  • 各位大侠~

    我的程序使用的是C#和silverlight API, 是想将保存在collection里面的数据写入到XML文件里,我现在有XML的schema文件,也就是xsd文件。我是这方面的新手。。。真是一点头绪也没有啊。麻烦有经验的同学帮帮忙,大概需要怎么样的步骤来完成这个呢?或者有没有相关的帖子呢?非常感谢大家!

    2010年11月22日 6:01

答案

  • dear
    你可以把Collection转成DataTable,然后再利用
    写挡:
    WriteXml()转成XML
    http://msdn.microsoft.com/zh-cn/library/system.data.datatable.writexml.aspx

    读挡:
    1.先用ReadxmlSchema()读取资料结构
    http://msdn.microsoft.com/zh-tw/library/system.data.datatable.readxmlschema.aspx

    2.在用ReadXml()读取资料
    http://msdn.microsoft.com/zh-tw/library/system.data.datatable.readxml.aspx


    你也可以利用 XmlDocument 直接操作XML结构
    http://www.dotblogs.com.tw/yc421206/archive/2010/08/10/17108.aspx

    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2010年11月22日 7:07
  • 如果有 XSD 的话,先阅读一下它,搞清楚您需要的目标 XML 文件格式。然后,可以选择以下方法中的任何一种实现:

    1、XML 序列化,利用 System.Xml.XmlSerializer,不过,去匹配那个 XSD 就是个大问题,可能需要一些功夫的。
    2、直接把所有 XML 作为 string,用代码生成这个 string,然后写入到文件。这种方法极其灵活,可以轻松地适应 XSD,不过就是代码可读性差,可维护性基本没有。
    3、利用 System.Xml.Linq.XDocument 类,用 LINQ to XML 实现,这种方法兼顾 1 和 2 的优势,但需要一定的 XML 和 LINQ 的基础知识。

    不推荐利用 DataTable,因为它生成的 XML 的 Schema 不可控。


    Mark Zhou
    2010年11月22日 7:43
  • 如果有 XSD 的话,先阅读一下它,搞清楚您需要的目标 XML 文件格式。然后,可以选择以下方法中的任何一种实现:

    1、XML 序列化,利用 System.Xml.XmlSerializer,不过,去匹配那个 XSD 就是个大问题,可能需要一些功夫的。
    2、直接把所有 XML 作为 string,用代码生成这个 string,然后写入到文件。这种方法极其灵活,可以轻松地适应 XSD,不过就是代码可读性差,可维护性基本没有。
    3、利用 System.Xml.Linq.XDocument 类,用 LINQ to XML 实现,这种方法兼顾 1 和 2 的优势,但需要一定的 XML 和 LINQ 的基础知识。

    不推荐利用 DataTable,因为它生成的 XML 的 Schema 不可控。


    Mark Zhou

    Dear Mark,

    請問你所謂的 Schema 不可控是啥意思? Schema 不是一个标准的结构吗?
    XmlWriteMode 列举就很多产生结构的方式吧?
    WriteXml(Stream, XmlWriteMode)
    WriteXml(String, XmlWriteMode)
    WriteXml(TextWriter, XmlWriteMode)
    WriteXml(XmlWriter, XmlWriteMode)


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2010年11月22日 10:01

全部回复

  • dear
    你可以把Collection转成DataTable,然后再利用
    写挡:
    WriteXml()转成XML
    http://msdn.microsoft.com/zh-cn/library/system.data.datatable.writexml.aspx

    读挡:
    1.先用ReadxmlSchema()读取资料结构
    http://msdn.microsoft.com/zh-tw/library/system.data.datatable.readxmlschema.aspx

    2.在用ReadXml()读取资料
    http://msdn.microsoft.com/zh-tw/library/system.data.datatable.readxml.aspx


    你也可以利用 XmlDocument 直接操作XML结构
    http://www.dotblogs.com.tw/yc421206/archive/2010/08/10/17108.aspx

    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2010年11月22日 7:07
  • 如果有 XSD 的话,先阅读一下它,搞清楚您需要的目标 XML 文件格式。然后,可以选择以下方法中的任何一种实现:

    1、XML 序列化,利用 System.Xml.XmlSerializer,不过,去匹配那个 XSD 就是个大问题,可能需要一些功夫的。
    2、直接把所有 XML 作为 string,用代码生成这个 string,然后写入到文件。这种方法极其灵活,可以轻松地适应 XSD,不过就是代码可读性差,可维护性基本没有。
    3、利用 System.Xml.Linq.XDocument 类,用 LINQ to XML 实现,这种方法兼顾 1 和 2 的优势,但需要一定的 XML 和 LINQ 的基础知识。

    不推荐利用 DataTable,因为它生成的 XML 的 Schema 不可控。


    Mark Zhou
    2010年11月22日 7:43
  • 如果有 XSD 的话,先阅读一下它,搞清楚您需要的目标 XML 文件格式。然后,可以选择以下方法中的任何一种实现:

    1、XML 序列化,利用 System.Xml.XmlSerializer,不过,去匹配那个 XSD 就是个大问题,可能需要一些功夫的。
    2、直接把所有 XML 作为 string,用代码生成这个 string,然后写入到文件。这种方法极其灵活,可以轻松地适应 XSD,不过就是代码可读性差,可维护性基本没有。
    3、利用 System.Xml.Linq.XDocument 类,用 LINQ to XML 实现,这种方法兼顾 1 和 2 的优势,但需要一定的 XML 和 LINQ 的基础知识。

    不推荐利用 DataTable,因为它生成的 XML 的 Schema 不可控。


    Mark Zhou

    Dear Mark,

    請問你所謂的 Schema 不可控是啥意思? Schema 不是一个标准的结构吗?
    XmlWriteMode 列举就很多产生结构的方式吧?
    WriteXml(Stream, XmlWriteMode)
    WriteXml(String, XmlWriteMode)
    WriteXml(TextWriter, XmlWriteMode)
    WriteXml(XmlWriter, XmlWriteMode)


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2010年11月22日 10:01