「C#」カテゴリーアーカイブ

xmlを読む方法が良いのはどれ

C#ではDOMパーサーでパーシングする場合はXmlDocumentクラスだそうです。メモメモ
using System.Xml;

var reader = new StreamReader(“config.xml”);
var xmlDoc = new XmlDocument();
xmlDoc.Load(reader);/span>Load(reader);

一気にメモリに読み込むのは以下の方法が簡単らしいのだが、ノードや中に入っている属性の説明が入っていればいいが、殆ど無い。

XmlDocument.Load(TextReader)で一気にメモリに読み込む。
そこから値を取得する場合、例えばルートのタグがresponseであれば、

var res = xmlDoc.GetElementsByTagName(“response”);

var associate = new Dictionary<string, string>();
foreach (XmlNode node in res[0].ChildNodes)
{
associate.Add(node.Name, node.InnerText);
}

その解説なるものを見つけたのでこれもなくなって欲しく無いのでメモメモ

続きを読む xmlを読む方法が良いのはどれ

文字コードのUTF-8のBOM無し、BOM付きとは?

BOMというのが、Byte Order Markの略.

BOM付きというのは、そのファイルを読み込むプログラム側に「このファイルは文字コードがUnicodeのUTF-8形式で書かれてますよ」と、事前に通知してあげる状態のことを言います。

そのために、ファイルの先頭に目に見えない形で約3バイトほどのデータを付加しています。これがBOMです。

一方BOMなしというのは、この情報を付加しない形のものとなります。

BOMなしの場合、ファイルを処理するプログラムによっては文字エンコーディングがUTF-8なのか、UTF-16、UTF-32なのか、はたまた別の文字エンコーディングなのか判別がつかず、文字化けを起こしてしまう可能性がある。

そういう場合にはBOM付きで保存すると、文字エンコーディングを正しく判別することが出来て文字化けを防ぐことが出来ます。

BOMをつければ良いというわけではなく、この後のプログラムも両方のデータで検査したほうが良いらしい。

DataGridViewへのテキストファイル追加

参考が出てたので消されないようにメモメモ

DataGridViewにファイル名を送り込んで
エンコード
そのファイル名から、delimitersの分割定義によって取り込み
登録していく。ふむふむ
usingを使ったら自動的に開放してくれる。
using System.IO;
using System.Text;

private void setTextToDataGridView(string filename)
{
// UTF-8(BOMなし)の場合
// Encoding encoding = new UTF8Encoding(false);

// Shift-JISの場合
// Encoding encoding = Encoding.GetEncoding(932);

// UTF-8(BOMあり)の場合
Encoding encoding = Encoding.UTF8;

// DataGridView の行を空にする
dataGridView1.Rows.Clear();

// using を使えば自動的に解放処理ができます
using (StreamReader sr = new StreamReader(filename, encoding))
{
// 分割対象の文字を定義
char[] delimiters = new char[] {\t, ,};

// EndOfStream == true で終了
while (!sr.EndOfStream)
{
string line = sr.ReadLine();
string[] cells = line.Split(delimiters);
dataGridView1.Rows.Add(cells);
}

// usingを使用しない場合は最後にDisposeをコールする
// sr.Dispose();
}
}