INI的替代品--XML配置文件读取与保存

.Net中并没有提供INI读写的托管类库,如果使用INI必须调用非托管API。有一个NINI提供了托管类库。
今天我们来实现XML配置文件读取与保存
1.集合类
         首先我们需要一个集合类来保存键和键值。它必须同时提供键名和索引两种查找键值的办法。所以我们采用 System.Collections.Specialized.NameValueCollection 类。需要注意的是这个类的键值只能是String。

None.gif Imports  System.Xml
ExpandedBlockStart.gifContractedBlock.gif
Public   Class Setting Class Setting
InBlock.gif    
Inherits System.Collections.Specialized.NameValueCollection
ExpandedBlockEnd.gif
End Class


2.XML配置文件格式
       配置文件格式我们采用app.config的格式

None.gif <? xml version="1.0" encoding="utf-8" ?>
None.gif
< configuration >
None.gif    
< appSettings >
None.gif        
< add  key ="key1"  value ="value1" />
None.gif    
</ appSettings >
None.gif
</ configuration >
None.gif


3.XML配置文件的读取

ExpandedBlockStart.gif ContractedBlock.gif    Sub LoadSetting() Sub LoadSetting(ByVal FilePath As String)
InBlock.gif        
Dim Reader As XmlTextReader
InBlock.gif        
Try
InBlock.gif            Reader 
= New XmlTextReader(FilePath)
InBlock.gif            Reader.WhitespaceHandling 
= WhitespaceHandling.None '忽略所用Whitespace
InBlock.gif
            Me.Clear() '清除现有所有数据
InBlock.gif
        Catch ex As Exception
InBlock.gif            
MsgBox("找不到XML文件" + ex.ToString)
InBlock.gif            
Exit Sub
InBlock.gif        
End Try
InBlock.gif        
Try
InBlock.gif            
While Reader.Read
InBlock.gif                
If Reader.Name = "add" Then
InBlock.gif                    
Dim Key, Value As String
InBlock.gif                    Reader.MoveToAttribute(
"key")
InBlock.gif                    Key 
= Reader.Value
InBlock.gif                    Reader.MoveToAttribute(
"value")
InBlock.gif                    Value 
= Reader.Value
InBlock.gif                    Me.
Set(Key, Value)
InBlock.gif                    Reader.MoveToElement()
InBlock.gif                
End If
InBlock.gif            
End While
InBlock.gif        
Catch ex As Exception
InBlock.gif            
MsgBox("XML文件格式错误" + ex.ToString)
InBlock.gif            
Exit Sub
InBlock.gif        
Finally
InBlock.gif            Reader.Close()
InBlock.gif        
End Try
ExpandedBlockEnd.gif    
End Sub


3.XML配置文件的写入


ExpandedBlockStart.gif ContractedBlock.gif      Sub SaveSetting() Sub SaveSetting(ByVal FilePath As String)
InBlock.gif        
Dim Writer As New XmlTextWriter(FilePath, System.Text.Encoding.Default)
InBlock.gif        Writer.WriteStartDocument() 
'写入XML头
InBlock.gif
        Dim I As Integer
InBlock.gif    Writer.WriteStartElement(
"configuration")    
InBlock.gifWriter.WriteStartElement(
"appSettings")
InBlock.gif        
For I = 0 To Me.Count - 1
InBlock.gif            Writer.WriteStartElement(
"add")
InBlock.gif            Writer.WriteStartAttribute(
"key"String.Empty)
InBlock.gif            Writer.WriteRaw(Me.GetKey(I))
InBlock.gif            Writer.WriteEndAttribute()
InBlock.gif            Writer.WriteStartAttribute(
"value"String.Empty)
InBlock.gif            Writer.WriteRaw(Me.Item(I))
InBlock.gif            Writer.WriteEndAttribute()
InBlock.gif            Writer.WriteEndElement()
InBlock.gif        
Next
InBlock.gif        Writer.WriteEndElement()
InBlock.gif        Writer.WriteEndElement()
InBlock.gif        Writer.Flush()
InBlock.gif        Writer.Close()
ExpandedBlockEnd.gif    
End Sub


BTW:   也许你要问这些功能有何用处,是的在full framework中纯粹多余。可是.Net CF........

转载于:https://www.cnblogs.com/blaze/archive/2005/01/15/92405.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值