65.9K
CodeProject 正在变化。 阅读更多。
Home

Compact Framework 配置 XML 文件读写,类似 appSettings

starIconstarIconstarIconemptyStarIconemptyStarIcon

3.00/5 (1投票)

2010年1月13日

CPOL

2分钟阅读

viewsIcon

39065

downloadIcon

943

如何在 Windows Mobile 开发中使用 XML 文件读取和写入应用程序设置

CFNET-AppSettings

引言

提供的代码用于将 XML 文件用作数据存储(速度快)。
它类似于 .NET Framework 的 appSettings 类,但专门用于 compact framework。它 100% 兼容且非常轻量级(与 SQLCE 相比)。它解决了在任何 CFNet 设备中永久存储与应用程序相关的数据(不仅是设置)的问题,因此您可以使用此类在客户端 Windows Mobile 智能设备中存储其他类型的数据。

背景

这很容易移植到 C#。这段代码 - 针对 VB.NET - 如果不存在 XML 文件,则会创建一个 XML 文件。它非常容易使用,只需不到一分钟,因为您有一个默认的 XML 设置文件,该文件位于您可以轻松自定义的字符串变量中(位于 *#MyAppSetting.vb* 中)。**使用该类,您可以创建/存储、加载和更新通过 XML 传输的数据**。您可以添加应用程序所需的所有 *'数据字段'*,并以简单的 1 或 2 种方式进行管理

  • 快速:直接在包含 XML 作为文本的变量字符串上编写 *所需* 的数据字段(位于 *#MyAppSetting.vb* 中)
  • 具有集成的智能感知:只需为所需的每个数据或设置编写 1 个属性,如下所示
'Within class
Public Property YourRequiredData() As TypeNeeded
    Get
        Return Me.ListItems.Get("YourRequiredData")
    End Get
    Set(ByVal value As TypeNeeded)
        Me.ListItems.Set("YourRequiredData", value)
    End Set
End Property

使用代码

它非常易于使用,并且文档完善(我认为)。只需将类 *MyAppSetting.vb* 添加到您的项目中,然后

'At the top of the form, just below form class declaration
Dim MyAppSettings As New MyAppSettings

对于上面的实例,您可以有选择地传递 args; Path 字符串和 FileName 字符串来查找/创建 *(查看提供的代码以获取更多信息)*。如果该类未找到任何 XML 文件,则会自动创建一个,随时可以使用。什么?默认 XmlDefaultConfig....在该类中有一个 var,其中包含您可以自定义的默认 XML 配置(appSettings 选项卡中的所有自定义代码,遵循格式)

Private XmlDefaultConfigurationFileString As String = _
"<?xml version=""1.0"" encoding=""utf-8"" ?>" & _
"<configuration>" & _
    "<appSettings>" & _
        "<add key=""FileCreated"" value=""" & Now & """ />" & _
        "<add key=""FileModified"" value="""" />" & _
        "<add key=""UserName"" value="""" />" & _
        "<add key=""LoginCount"" value=""0"" />" & _
    "</appSettings>" & _
"</configuration>"

现在您可以随时加载数据

'Code to Load data
Dim YourRequiredData As AnyType = MyAppSettings.YourRequiredData 'if you write that 
			'property/per/ as indicated above at the top of document 
Dim YourRequiredDataWithoutTypeAnyProp As AnyType = _
	CType(MyAppSettings.ListItems("YourRequiredDataWithoutTypeAnyProp"), AnyType)

您可以通过执行以下操作来保存

'Code to Save/Update data to xml settings
MyAppSettings.YourRequiredData = "new data to store .."
MyAppSettings.ListItems("YourRequiredDataWithoutTypeAnyProp") = Now.today 'for example
MyAppSettings.SaveXmlCurrentConfiguration()

关注点

我编写了 3 种不同的方法来保存 XML 默认文件(您可以实现这些方法以在另一种方法中更新或保存)。它们位于以下 enum

 Enum enumXmlSaveMethod
    StreamWrite = 1     'Basic
    XmlTextWriter = 2   'Good
    XmlDocument = 3     'Good as knowledge

End Enum                
Private XmlSaveMethod As enumXmlSaveMethod = enumXmlSaveMethod.XmlDocument

您只需更改最后的分配即可尝试这 3 种方法。

历史

剩下的就是应用 3 种不同的保存方法 - 如果您想要 - 对于

Public Function SaveXmlCurrentConfiguration_
	(Optional ByVal StrPath As String = Nothing, _
	Optional ByVal StrFilename As String = "AppSettings.xml")

现在仅适用于

Public Function SaveXmlDefaultConfigurationFile(ByVal FilePath As String, _
	Optional ByVal XmlConfigurationFileString As String = Nothing) As Boolean 

我只应用于一个 sub 以构建和显示更少的代码,以便开发人员可以查看和选择。

这是我为 CodeProject 社区构建的第一个条目,大约花费 4 个小时,包括测试,以及接近 2 个小时的文档和上传。我将编写基于其他人的代码 - 包括 SaveSettings.aspx 中的 pbrroks 和 http://msdn.microsoft.com/en-us/library/aa446526.aspx 中的 Microsoft,以使我们的移动项目能够快速使用 config.data

我希望你喜欢它。 - 如果您进行故障排除,请发布任何错误!
Alejandro B. Martin

历史

  • 2010 年 1 月 13 日th:初始帖子
© . All rights reserved.