PDA

View Full Version : XML و دسترسی تصادفی



Developer Programmer
دوشنبه 24 خرداد 1389, 14:20 عصر
من میخوام تنظیمات برنامه رو داخل فایل XML ذخیره کنم و در صورت نیاز مقدار Node رو بخونم.
روشی هست که بشه به Node دسترسی تصادفی داشت تا مجبور نشم کل XML رو بخونم؟

Developer Programmer
دوشنبه 24 خرداد 1389, 18:52 عصر
دوستان من تونستم مقادیر لازم رو داخل XML بذارم


Const file As String = "c:\options.ini.xml"

Dim settings As New XmlWriterSettings()
settings.Indent = True
settings.NewLineOnAttributes = False

Using writer As XmlWriter = XmlWriter.Create(file, settings)

writer.WriteStartDocument()
writer.WriteStartElement("Options") 'root'

'appearance
writer.WriteStartElement("appearance")

writer.WriteAttributeString("wallpaper", "", file)
writer.WriteAttributeString("Font", "", "tahoma")
writer.WriteEndElement()

'printer
writer.WriteStartElement("printer")
writer.WriteAttributeString("pos", "", "epson pos printer")
writer.WriteAttributeString("normal", "", "samsung")
writer.WriteEndElement()

'Connection
writer.WriteStartElement("connection")
writer.WriteAttributeString("user", "", "sa")
writer.WriteAttributeString("password", "", "123")
writer.WriteEndElement()

writer.WriteEndDocument()
writer.Flush()
End Using


در اینصورت، XML به این صورت مقدار دهی میشه

<?xml version="1.0" encoding="utf-8"?>
<Options>
<appearance wallpaper="c:\options.ini.xml" Font="tahoma" />
<printer pos="epson pos printer" normal="samsung" />
<connection user="sa" password="123" />
</Options>
اما الان نمیتونم از داخل XML مقادیر رو بخونم. کسی میتونه کمک کنه؟

Developer Programmer
دوشنبه 24 خرداد 1389, 19:28 عصر
تونستم XML رو بخونم


Const file As String = "c:\options.ini.xml"

Dim doc As New Xml.XmlDocument
doc.Load(file)
Dim reader As New Xml.XmlNodeReader(doc)
While reader.Read()
Select Case reader.NodeType
Case Xml.XmlNodeType.Element
If reader.Name = "printer" Then
MessageBox.Show(reader.GetAttribute("normal"))
End If
End Select
End While

Developer Programmer
سه شنبه 25 خرداد 1389, 18:17 عصر
کد من در خصوص کاری که میخواستم با XML انجام بدم بدرد بخور بود...
منتها امروز که اینترنت رو میگشتم یه Class Library خیلی مفید جهت کار با INI, Registry,XML پیدا کردم که توابع زیادی نظیر افزودن،جستجو و حذف Entry ها برای اینکارها داره.
از اونجا که اخیرا فوروم، در خصوص پاسخگویی و راهنمایی دچار رکود شده، تصمیم گرفتم این کلاس و فایل راهنمای اون رو آپلود کنم.

امیدوارم مفید واقع بشه

نمونه کد برای کار با XML :
Const file As String = "c:\option.xml"
Dim xml As New AMS.Profile.Xml(file)
xml.Encoding = System.Text.Encoding.UTF8
xml.RootName() = "Root"
xml.SetValue("section1", "entry1", "value1")
xml.SetValue("section2", "entry2", "value2")
xml.SetValue("section3", "entry3", "value3")
xml.GetValue("section2", "entry2")

و خروجی XML تولید شده:
<?xml version="1.0" encoding="utf-8"?>
<Root>
<section name="section1">
<entry name="entry1">value1</entry>
</section>
<section name="section2">
<entry name="entry2">value2</entry>
</section>
<section name="section3">
<entry name="entry3">value3</entry>
</section>
</Root>