我对编程世界相当陌生(我是网络人)。然而,我被要求开发一个为控制台应用程序配置 xml 文件的前端。控制台应用程序从这个 xml 文件中读取并打开浏览器的多个实例,每个监视器一个实例(总共 6 个监视器)。有4个控制中心,每个控制中心有6个监视器。每个控制中心都由单独的 PC 运行。这些电脑不在网络上,也无法相互访问。有人告诉我我也不能使用数据库。
每个监视器一次将显示一个网站,可能会列出多个站点以显示在特定监视器上,因此它们会定期更改。每个控制中心将显示不同的站点。
我的第一个问题:这个 XML 有效吗?
<ControlCenter>
<Monitor>
<monitor_id>0</monitor_id>
<browser_short_na>ie</browser_short_na>
<url_list>
<url>
<url_id>0</url_id>
<url_na><![CDATA[http://www.hmv.com]]></url_na>
<parameter><![CDATA[]]></parameter>
</url>
<url>
<url_id>1</url_id>
<url_na><![CDATA[http://www.amazon.com]]></url_na>
<parameter><![CDATA[]]></parameter>
</url>
<url>
<url_id>2</url_id>
<url_na><![CDATA[http://www.google.com]]></url_na>
<parameter><![CDATA[]]></parameter>
</url>
</url_list>
</Monitor>
<Monitor>
<monitor_id>1</monitor_id>
<browser_short_na>ie</browser_short_na>
<url_list>
<url>
<url_id>0</url_id>
<url_na><![CDATA[http://www.amazon.com]]></url_na>
<parameter><![CDATA[]]></parameter>
</url>
</url_list>
</Monitor>
</ControlCenter>
到目前为止我所做的是打开 xml 文件并将所有监视器添加到组合框
Dim dom As New Xml.XmlDocument
dom.Load("test.xml")
ComboBox1.Items.Clear()
Dim monitorid As String = String.Empty
For Each node As Xml.XmlNode In dom.SelectNodes("//ControlCenter/Monitor/monitor_id")
monitorid = node.InnerText
ComboBox1.Items.Add(monitorid)
Next
这就是我现在卡住的地方。一旦用户从组合框中选择了一个监视器,我就需要获取该监视器的所有信息。所以我需要browser_short_na,所有的url都基于选择的monitor_id。
我尝试创建一个数据集,使用 readxml 加载 xmlfile。然后我尝试创建一个指向该数据集的数据视图。尝试将 RowFilter 添加到数据视图。
Dim val As String = ComboBox1.SelectedItem.ToString
Dim dsXmlFile As New DataSet
dsXmlFile.ReadXml("test.xml")
Dim dv As New DataView
dv.Table = dsXmlFile.Tables(0)
Dim drv As DataRowView
dv.RowFilter = "monitor_id = " & val
Dim url As String = ""
'Retrieve my values returned in the result
For Each drv In dv
url = drv("url_na")
Next
当我单步执行代码并查看 for each 循环时,它失败并显示消息“url_na 既不是 DataColumn 也不是表监视器的 DataRelation”。
我在想我没有正确处理 url_list 部分。
读取所选监视器的所有信息后,我将在文本框/列表框中显示值,然后用户可以对其进行编辑。如果他们随后保存,则应将新值写入 xml 文件。他们还可以选择在列表中添加额外的 url,甚至创建一个全新的监控部分。
任何帮助/建议将不胜感激。