私はプログラミングの世界ではかなり新しいです (私はネットワーク担当者です)。しかし、コンソール アプリケーション用の xml ファイルを構成するフロント エンドの開発を依頼されました。コンソール アプリケーションは、この xml ファイルから読み取り、ブラウザーの複数のインスタンス (モニターごとに 1 つのインスタンス (合計 6 つのモニター)) を開きます。4 つのコントロール センターがあり、それぞれに 6 つのモニターがあります。各コントロール センターは、個別の PC から実行されます。これらの PC はネットワーク上になく、相互にアクセスできません。データベースも使用できないと言われました。
各モニターは一度に 1 つの Web サイトを表示します。特定のモニターに表示される複数のサイトがリストされている可能性があるため、サイトは定期的に変更されます。各コントロール センターには異なるサイトが表示されます。
私の最初の質問: この 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
これは私が立ち往生しているところです。ユーザーがコンボボックスからモニターの 1 つを選択したら、そのモニターのすべての情報を取得する必要があります。したがって、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 はテーブル Monitor の DataColumn でも DataRelation でもありません」というメッセージが表示されて失敗します。
url_list セクションを正しく処理していないと考えています。
選択したモニターのすべての情報が読み取られたら、ユーザーが編集できるテキストボックス/リストボックスに値を表示します。その後保存すると、新しい値が xml ファイルに書き込まれます。リストに追加の URL を追加したり、まったく新しい監視セクションを作成したりすることもできます。
どんな助け/提案も大歓迎です。