3

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

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 的数组,因为无论如何我已经为每个应用程序都有一个,但我不知道如何动态创建一个具有另一个变量名称的数组。我看着使用字典,但是我有两个以上的变量,不知道如何使它与它一起工作。

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

4

2 回答 2

3

将 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

还有一个 (String,App) 的字典 - 假设你会按名称索引。

您可以像这样填充它(其中xmltype 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 序列化。我通过谷歌搜索找到的一些示例:

于 2013-02-17T13:22:19.577 回答
1

你只关心在应用程序运行时存储这些数据吗?我会使用数据表

Dim x As New DataTable
        x.ReadXml("c:\pathtoxml.xml")
        x.AcceptChanges()
于 2013-02-17T13:27:47.557 回答