2009-06-02 14 views
0

私は、XMLファイル(またはiniファイル、問題ではありません)から各行を読み取るVB.netアプリケーションを作成しようとしています。これは、文字列の名前を指定するものです。各XML行を指定された文字列に読み込む方法は?

例えば

"string1 = xml.line1" 
"string2 = xml.line2" 

など

これを行うための最善の方法でしょうか? 私はすでにXml.XmlTextReaderでビットをプルしていますが、それは仕事をしているようですが、自分の文字列として各行を細分することはできませんか?

答えて

0

あなたがラインでXMLラインを扱う、あなたはプレーンテキストファイルとして扱い、各ライン上の正規表現か何かを実行する必要がありますXMLのセマンティクスを無視したい場合:

Dim lines = File.GetAllLines("file.xml") 
' Check the lines (which is a String array) for the criteria 
1

行されますXMLドキュメントではめったに便利な概念ではありません。たとえば:

<foo> 
    <bar first="x" 
     second="y" /> 
</foo> 

通常は、個々の要素ではなく、ラインのXML文書を照会したい

<foo> 
    <bar first="x" second="y" /> 
</foo> 

に相当します。しかし、.iniファイルでは、はるかに分かりやすいでしょう。

ここで大きな画像は何ですか?あなたは何を達成しようとしていますか?

あなたは(あなたが一度にメモリでそれらのすべてを必要としない)、テキストファイルのすべての行を読み取るために必要がある場合、私はその後ReadLine()を呼び出して、あなたのように文字列を処理し、TextReaderを返しFile.OpenTextを使用してお勧めします返される行がNothing(これはファイルの最後に達したことを意味します)になるまで行ってください。読者をUsingステートメントで囲むことを忘れないでください。

EDIT:ファイル内に何も必要がない場合は、1行に1つのエントリを書き込むだけで基本的に完了します。一方、他の設定情報が必要な場合は、すべてを変更する必要があります。

iniファイルを使用するのはかなり簡単ですが、解析するコードを記述する必要があります。 (以前の会社で書いたのですが、それほど時間がかかりませんでした)

XMLファイルを使用すると、「fluff特にXMLを.NET 3.5とLINQで使用している場合は、読み込みが非常に簡単です。たとえば、あなたがこのようなファイルかもしれない:

<Configuration> 
    <RegistryEntries> 
     <RegistryEntry>First</RegistryEntry> 
     <RegistryEntry>Second</RegistryEntry> 
     <RegistryEntry>Third</RegistryEntry> 
    </RegistryEntries> 
</Configuration> 

を、ちょうど行うことにより、エントリのシーケンスを取得:

document.Root.Element("RegistryEntries") 
      .Elements("RegistryEntry") 
      .Select(e => e.Value); 

をさらに別の代替として、あなたは組み込みの設定/設定を使用することができます.NETの機能プロジェクトプロパティの「設定」部分を使ってみましたか?

+0

これらの行の値は、レジストリエントリの名前を表す必要があります。たとえば、名前、電子メールなど。そして、レジストリエントリが変更された場合に備えて、レジストリエントリの名前をハードコアしたくありません。おそらく、iniファイルからの読み込みがうまくいくかもしれません。テキストファイルでさえもうまくいくかもしれません。 :) –

関連する問題