Страница: 1 |
Осваиваю .NET недавно, поэтому простите за чайниковские вопросы. КАк в .NET работать с INI файл (или что там есть вместо него) ? Особенно интересует чтение из него (пока) . И как он выглядит (если что-то изменилось)? Может у кого примерчик есть - лучше всего ! Спасибо заранее.
Вот, держи: public { private const string XML_PATH = "//category[@name='{0}']/key[@name='{1}']/@value"; private XPathDocument document; public IniReader(string filename) { using (StreamReader sr = File.OpenText(filename)) { document = new XPathDocument(sr); } } public string ReadKey(string category, string key) { XPathNavigator nav = document.CreateNavigator(); XPathNodeIterator it = nav.Select(String.Format(XML_PATH, category, key)); it.MoveNext(); return it.Current.Value.Length != 0 ? it.Current.Value : null; } } Пример использования: XML file: <ini> Клиентский код: IniReader ir = new IniReader("C:\\myfile.xml"); string value = ir.ReadKey("Category2", "Key2"); Страница: 1 |
Вопрос: INI файл - помогите чайнику, плиз?
Добавлено: 06.06.04 12:39
Автор вопроса: MaxJr | Web-сайт:
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #1
Добавлено: 06.06.04 16:21
Встроенных средств для работы с INI в .NET нет. Можешь использовать
API функции.
А вообще, ИМХО, лучше хранить настройки другим способом. Например, в
XML-файле. За XML будущее.
Номер ответа: 2
Автор ответа:
MaxJr
Вопросов: 2
Ответов: 3
Web-сайт:
Профиль | | #2
Добавлено: 07.06.04 09:48
Павел
ОК, я не против и в XML...
есть возможность построить этот файл по подобию ИНИ и потом пользоваться им подобным образом?
Номер ответа: 3
Автор ответа:
MaxJr
Вопросов: 2
Ответов: 3
Web-сайт:
Профиль | | #3
Добавлено: 07.06.04 11:24
Делаю с API все, как в хелпе написано, но что-то не работает. Может кто-то может помочь?
Номер ответа: 4
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #4
Добавлено: 07.06.04 16:40
Я бы предложил такой вариант... Держать настройки в HashTable, а для
сохранения в файл использовать сериализацию (возможна и XML
сериализация).
Ну, можно конечно юзать XML на низком уровне. Для этого существуют
классы из пространства имён System.XML. Я вот на днях прочитал в
буржуйском журнале про System.XML, там как раз есть пример о
сохранении настроек. У меня есть желание перевести её на русский.. Так
что возможно в течение месяца переведу, выложу на сайт.
Номер ответа: 5
Автор ответа:
Воронков Василий
Вопросов: 1
Ответов: 90
Профиль | | #5
Добавлено: 08.06.04 11:00
<category name="Category1">
<key name="Key1" value="Value1"/>
</category>
<category name="Category2">
<key name="Key2" value="Value2"/>
</category>
</ini>
Номер ответа: 6
Автор ответа:
Воронков Василий
Вопросов: 1
Ответов: 90
Профиль | | #6
Добавлено: 08.06.04 11:16
Нда, сайт же называется VBNET.ru. Вот переписанная версия:
Imports System.IO
Imports System.Xml
Imports System.Xml.XPath
Module Module1
Sub Main()
 im Reader As IniReader = New IniReader("C:\ini.xml"
 im Value As String = Reader.ReadKey("Category2", "Key2"
End Sub
End Module
Public Class IniReader
Private Const XML_PATH As String = "//category[@name='{0}']/key[@name='{1}']/@value"
Private Document As XPathDocument
Public Sub New(ByVal FileName As String)
 im Reader As StreamReader
Try
Reader = File.OpenText(FileName)
 ocument = New XPathDocument(Reader)
Finally
Reader.Close()
End Try
End Sub
Public Function ReadKey(ByVal Category As String, ByVal Key As String) As String
 im Nav As XPathNavigator = Document.CreateNavigator()
 im It As XPathNodeIterator = Nav.Select(String.Format(XML_PATH, Category, Key))
It.MoveNext()
If Not It.Current.Value.Length = 0 Then
Return It.Current.Value
Else
Return Nothing
End If
End Function
End Class