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

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

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

Re[1]: C#でのXMLの出力!


(過去ログ 20 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■8684 / inTopicNo.1)  C#でのXMLの出力!
  
□投稿者/ 桃太郎侍 (1回)-(2007/10/06(Sat) 18:04:26)

分類:[C#] 

こんにちは、初めてこのサイトに書き込みます。
宜しくお願いいたします。

さて今回僕が困っているのはC#での出力方法です。
テキストボックス内にある値をXML形式で出力さるのが目的です。

例えば以下のような文章で、正規表現などを織り交ぜて記述していけば
XML形式でテキストに書き出すことは可能ですが、

例:writer.Write(textBox1.Text);

この方法だと見た目もよくなく、しかもXMLのレイアウト内容を修正
するのにも手間がかかってしまいます。
もっと簡単にXML形式でテキスト内に出力する事は出来ないのでしょうか?
引用返信 編集キー/
■8687 / inTopicNo.2)  Re[1]: C#でのXMLの出力!
□投稿者/ Hongliang (197回)-(2007/10/06(Sat) 22:31:38)
Hongliang さんの Web サイト
writer ってなんすか?

一般的には XmlWriter や XmlDocument を使用します。
適当にそれをラップしたクラスを使うことも多いでしょう。
オブジェクトの永続化が目的なら、XmlSerializer も使われますね。

「簡単」の方向性が分からんのでどうとも言えませんけど。
引用返信 編集キー/
■8691 / inTopicNo.3)  Re[1]: C#でのXMLの出力!
□投稿者/ mあ (93回)-(2007/10/07(Sun) 00:33:49)
No8684 (桃太郎侍 さん) に返信
> こんにちは、初めてこのサイトに書き込みます。
> 宜しくお願いいたします。
>
> さて今回僕が困っているのはC#での出力方法です。
> テキストボックス内にある値をXML形式で出力さるのが目的です。
>
> 例えば以下のような文章で、正規表現などを織り交ぜて記述していけば
> XML形式でテキストに書き出すことは可能ですが、

ももたろさん、あまり良く分かってなくて書いていますね?
場合にもよりますが、正規表現はものを作るよりも、部品を探し出すことに
使われる場合の方が多いですよ。で、結局はその部品を寄せ集めてモノを作
ることになるのですが。

>
> 例:writer.Write(textBox1.Text);
>
> この方法だと見た目もよくなく、

あー、これ、見た目って、ソース中の書き方のこと言っていますね?
ソース中にこんな同じ行が何行も現れるのは宜しくないよ、と。

> しかもXMLのレイアウト内容を修正するのにも手間がかかってしまいます。

そーですね。最終的な成果物(XML)とプログラムの構造が対になっていると
直しやすいことはありますが・・・見た目はがっかりもんですねw
出来上がったときの達成感はありますが。


> もっと簡単にXML形式でテキスト内に出力する事は出来ないのでしょうか?

簡単のレベルはどこらへんを妥協点とするかによるかと考えます。
君自身がメンテ不可能なレベルだと、コピペしたはいいけど、誰も触れない、
んじゃ意味無いしw


public function XmlKakou(tb as textbox) as string
dim sb as stringbuilder()
sb.append("<").append(tb.tag).append(">")
sb.append(tb.text).append("</").append(tb.tag).append(">")
return sb.tostring
end function

例えば、TextBox には、Tag というメンバがありますが、Object 型なんで
何でも適当に突っ込めるのですね。こいつに、XMLのノード名称を入れといて
上記のメソッドでTextBox1.Text の中身を使って、XML文字列を生成する、
なんてことは普通に出来ますね。
TextBox の派生クラスを作って、名前も XmlTextBox とかにして、ツール
ボックスに登録してあげれば、誰が使っても、呼び出し規約さえしっかり
しとけば、誰がどの画面を担当しても同じXML文字列が生成できるように
なったりしますね。

Public Class XmlTextBox : Inherits TextBox
private _XmlName as string

public sub New()
_XmlName = me.Name + "_x"
end sub

Public Property XmlName() As String
Get
return _XmlName
End Get
Set(value as string)
_XmlName = value
end set
end property

public overrides function ToString() as String
dim sb as new stringbuilder()
sb.append("<").append(me._XmlName).append(">")
sb.append(me.Text).append("</").append(me._XmlName).append(">")
return sb.tostring
end function

End Class

でこいつの _XmlName をプロパティエディタ上で必ず設定してね、ってルール
を作っておけば、誰でも、こいつを使えば、XMLのことを意識せずに、
XMLの文字列にすることが出来ますね。
<TextBox1_x>あいうえお</TextBox1_x>

ってのが、宜しくないなぁ、と。
<Text1_x value="あいうえお" /> にしたい、なんてときは、

ToString() を修正すれば、全てのこの部品を使っている画面の動作が一斉に変更
出来ますよねw

また、TextBox1_x ってのは、「必ず名前を設定しろ」ってルールに反するので
誰が作った画面で手を抜いているのかすぐに分かりますしね。

んじゃ、これが徒労に終わらないことを祈りつつ・・・
大抵は、「そーじゃないのです、説明が足りなくて申し訳有りませんでした、実は・・・」
となるのですが、どーでしょうw








引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -