存储XML数据的优雅解决方案

时间:2013-02-17 12:49:07

标签: xml vb.net storing-data dynamic-variables

我已经让我的应用程序从我的xml文档中读取了一些值但是我不确定我将如何存储它们,因为我目前在文件中的每个元素总共有6条信息。< / p>

XML示例

<?xml version="1.0" encoding="utf-8"?>
<App>
 <Name>First Application </Name>
 <FileName>1.exe</FileName>
 <FilePath>C:\</FilePath>
 <Third_Parameter>etc</Third_Parameter>
 <Forth_Parameter>etc</Forth_Parameter>
 <Name>Application 2</Name>
 <FilePath></FilePath>
 <Third_Parameter>etc</Third_Parameter>
 <Forth_Parameter>etc</Forth_Parameter>
</App>

我在考虑一个具有唯一ID的数组,因为我已经为每个应用程序提供了一个,但我不知道如何动态创建一个具有另一个变量名称的数组。我看了一下使用字典但是我有两个以上的变量而且不知道如何使用它。

基本上我需要一种在不使用数据库的情况下为潜在无限量的应用程序存储所有这些信息的方法。

2 个答案:

答案 0 :(得分:2)

将XML结构更改为树会很有用,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<Apps>
  <App Name="First Application">
    <FileName>1.exe</FileName>
    <FilePath>C:\</FilePath>
    <Third_Parameter>etc</Third_Parameter>
    <Forth_Parameter>etc</Forth_Parameter>
  </App>
  <App Name="Application 2">
    <FilePath></FilePath>
    <Third_Parameter>etc</Third_Parameter>
    <Forth_Parameter>etc</Forth_Parameter>
  </App>
</Apps>

然后你可以拥有这个课程:

Class App
  Public FileName As String
  Public FilePath As String
  Public Third_Parameter As String
  Public Forth_Parameter As String
  Public AppName As String
End Class

和(字符串,应用程序)的字典 - 假设您将按名称索引。

您可以像这样(xml类型XDocument)填充它:

Dim dict As New Dictionary(Of String, App)
For Each elem As XElement In xml.Elements()
  Dim app As New App 'each element would be App
  With app
    .AppName = elem.Attribute("Name").Value
    .FileName = elem.Element("FileName").Value
    .FilePath = elem.Element("FilePath").Value
    .Third_Parameter = elem.Element("Third_Parameter").Value
    .Forth_Parameter = elem.Element("Forth_Parameter").Value
  End With
  dict.Add(app.AppName, app)
Next

如果您需要更少的代码,请考虑查看XML序列化。我通过谷歌搜索找到的一些例子:

答案 1 :(得分:1)

您是否只关心在应用程序运行时存储此数据 我会使用数据表

Dim x As New DataTable
        x.ReadXml("c:\pathtoxml.xml")
        x.AcceptChanges()