C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 30 を表示中)
■14263 / )  ADO.NetからXMLを使う方法
□投稿者/ ふるふる (1回)-(2008/02/14(Thu) 11:12:22)

分類:[XML] 

最近、VB.Net(2003)をはじめました。

INIファイルの代わりにXMLを使おうとして、ACCESSでテーブルを作ってRecordsetの永続化を使い、XMLファイルにしました。Datasetを使ってXMLを取り込みましたが、そこから必要な行を選択する方法がわかりません。
XMLは以下のようになっています。

<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
	xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
	xmlns:rs='urn:schemas-microsoft-com:rowset'
	xmlns:z='#RowsetSchema'>
<s:Schema id='RowsetSchema'>
	<s:ElementType name='row' content='eltOnly'>
		<s:AttributeType name='Environ' rs:number='1' rs:nullable='true' rs:maydefer='true' rs:writeunknown='true'>
			<s:datatype dt:type='string' dt:maxLength='255'/>
		</s:AttributeType>
		<s:AttributeType name='Machine' rs:number='2' rs:nullable='true' rs:maydefer='true' rs:writeunknown='true'>
			<s:datatype dt:type='string' dt:maxLength='255'/>
		</s:AttributeType>
		<s:AttributeType name='MyPath' rs:number='3' rs:nullable='true' rs:maydefer='true' rs:writeunknown='true'>
			<s:datatype dt:type='string' dt:maxLength='255'/>
		</s:AttributeType>
		<s:AttributeType name='DBServer' rs:number='4' rs:nullable='true' rs:maydefer='true' rs:writeunknown='true'>
			<s:datatype dt:type='string' dt:maxLength='255'/>
		</s:AttributeType>
		<s:extends type='rs:rowbase'/>
	</s:ElementType>
</s:Schema>
<rs:data>
	<z:row Environ='Development' Machine='hogehage' MyPath='DEV' DBServer='hogehage'/>
	<z:row Environ='Testing' Machine='hogehage' MyPath='TEST' DBServer='hogehage'/>
	<z:row Environ='Production' Machine='hoge' MyPath='APPL' DBServer='hoge'/>
	<z:row Environ='QA' Machine='hogehage' MyPath='APPL' DBServer='hogehage\QA'/>
</rs:data>
</xml>


プログラム自身のパスとPC名でDBServer(実際はインスタンス名)を取得して、SQLServer2000に接続しようとしています。このプログラムはサーバ上で動くものです。
本来なら サーバのPC名=インスタンス名 としてどのサーバ上にプログラムがあっても関係なく動くようにするものだと思いますが、諸般の事情(開発サーバが急遽テストサーバになってしまってインスタンス名を変えられない)でそうはなっていないので、外部ファイルで環境の違いを吸収しようとしています。

現在は以下のように1行ずつチェックしていますが本来の方法ではないと思います。

Dim rXML As New Data.DataSet
Dim sv As String
rXML.ReadXml(sPath & "\environ.xml") 'sPathは.exeのフルパス
Dim tbl As DataTable
tbl = rXML.Tables(1)
For Each wRow In tbl.Rows
 If UCase(wRow.Item(1)) = UCase(sServer) Then
  If InStr(UCase(sPath), UCase(wRow(2))) Then
    sv = wRow.Item(3)
  End If
 End If
 Console.WriteLine(wRow.Item(0) & "," & wRow.Item(1) & "," & wRow.Item(2) & "," & wRow.Item(3))
Next

ご教示いただければ幸いです。


返信 編集キー/


管理者用

- Child Tree -