XmlTextWriterで改行、RichTextBoxで任意の文字列に属性を持たせるには

このQ&Aのポイント
  • C#で開発環境を使用して、RichTextBoxから入力された文章をXMLに出力する方法について説明します。
  • RichTextBox内で改行された場合に、XML文でも改行されるようにする方法について教えてください。
  • RichTextBox内で指定した文字列のみに属性を持たせる方法について教えてください。
回答を見る
  • ベストアンサー

XmlTextWriterで改行、RichTextBoxで任意の文字列に属性を持たせるには

XmlTextWriter writer = new XmlTextWriter("test.xml", null); writer.Formatting = Formatting.Indented; writer.WriteStartDocument(); writer.WriteStartElement("タイトル"); writer.WriteStartElement("内容"); writer.WriteStartElement("string"); writer.WriteAttributeString("size", RichTextBox.Text); writer.WriteString(RichTextBox.Text); writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteEndDocument(); writer.Flush(); writer.Close(); 開発環境はC#です。 上記のようなコードでRichTextBoxから入力された文章をxmlに出力するのですが、 RichTextBox内で改行しても、xml文では1行文のままで出力されてしまいます。 これを、RichTextBox内で改行されたら、xml文でも改行されているようにするにはどうすれば良いのでしょうか? それと、RichTextBox内で文字列の大きさを変えるために、"size"というアトリビュートを持たせているのですが、 これを任意の選択した文字列だけにアトリビュートを持たせるにはどうすれば良いのでしょうか? 例:<string>こんにちははじめまして</string> <string>こんにちは</string> <string size="10">はじめまして</string> 上記の文を下記の様にしたいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

>RichTextBox内で改行しても、xml文では1行文のままで出力されてしまいます。 え?出力されたXMLをエディタでみたら <string>こんにちは はじめまして</string> になりそうだけど。だから「改行が反映されていない」ように見えるのは受け取り側がエレメント内の改行を受け取っていない(IEなど、そういう動きをしているのはかなりの割合であります。) だから、改行を反映させるためには。 <string>こんにちは</string> <string size="10">はじめまして</string> じゃ内といけないんでしょうけど、XmlTextWriter の内容を理解しているなら上のコードでなぜこういう風にならないかは理解できますよね。 とりあえず、 foreach(String s in RichTextBox.Text.split(改行コード)) で改行コードで分解し、それごとにエレメントを書けばいいんじゃないかと。

関連するQ&A

  • RichTextBoxの改行を認知してくれない

    お世話になります。勉強のために リッチテキストボックスをひとつ作成し、プロパティ のTextにマウスをやると入力欄が出ましたので aaa bbb ccc ddd eee fff ggg と改行しながら入力したら、リッチテキストボックス に、意図したとおりに入力できているし 実行しても意図したとおりに文字が入っています。 一瞬これはいいぞ!と思いましたが ただ、プロパティのTextの欄には aaabbbcccdddeeefffgggと横長に 入っており、少し嫌な予感がしました。 まあスペースの関係でそうなってるのだろうと思いました。 次にバー(HScrollBar1)を作成し 0-6で可変。 ユーザーが行番号を指定する 目的です。 以下が、バーを操作した時に、行番号に対応した 配列要素が表示されるという目的のイベントです。 (TextBox1が表示先です) Private Sub HScrollBar1_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll Dim strVal Dim aryStrings strVal = RichTextBox1.Text aryStrings = Split(strVal, "VbCr") TextBox1.Text = aryStrings(HScrollBar1.Value) End Sub 結果は、失敗でした。!! 試しに、RichTextBox1.Textのプロパティを手動で aaaVbCr bbbVbCr cccVbCr dddVbCr eeeVbCr fffVbCr gggVbCr と書き換えて実行すると、成功しました。 しかしこれでは、改行を自動的に認識していることになりません。 よく考えてみると、Split(strVal, "VbCr")のVbCrは ””で囲まれているので、単なる意味を持たない文字列のような気がします。 Split関数自体は成功ですが、 本来なら、Split(strVal, "VbCr")ではなく Split(strVal, VbCr)でもって 改行位置で区切ってほしいのですが "VbCr"で区切るのなら、"ほにゃ”で区切っても良いことに なります。 お手数ですがどなたか素人向けに教えてください。

  • C# 文字列を改行コードで分割

    C# 文字列を改行コードで分割 テキストボックスに記載された文字列を1行ごとに取り出そうと思い string[] strs = textBox1.Text.Split('\n'); とコーディングしたら、末尾に\rがついてしまいました。 末尾の\rを削除するコードを追加して書けばよいのですが、改行コード\r\nで分割する方法ありましたらお教えください。

  • クエリーで文字列の間に改行を入れる

    お世話になります。アクセスのクエリで文字をつないでいるのですが、間に改行を入れたい時はどうすればよいでしょうか? 文字列: "文字1" & 改行を入れたい & "文字2" 最終的にテキストではき出すので改行をいれたいのですが、宜しくお願いします。

  • 教えていただけませんか?C言語 文字列について

    学校で文字列のプログラムを組む課題が出ました 以下のような課題です 1つの文字列を読み込んで,ピリオドで改行し出力するプログラムを作成しろ ・読み込む文字列の長さ 最大で80文字 ・文字列の終わりは必ずピリオドで ・文字列の途中に現れるピリオドの次には必ずスペースが続く ・ピリオドに続くスペースは出力しない 例えば Hello. It is fine. Good-bye.  と打つと Hello. It is fine. Good-bye. と表示されるようなプログラムです そして自分で以下のプログラムを組みました ----------------------------------------------------------- #include <stdio.h> #include <string.h> int main(void){ int i; char A[100]; char *a; fgets(A,80,stdin); a = strtok(A, "."); printf("%s.\n",a); while(a != NULL){ a = strtok(NULL,"."); if (a != NULL){ printf("%s.\n",a); } } return 0; } --------------------------------------------------------------- ですがこれだとピリオドの後のスペースと文字列の後によくわからない改行が出力されてしまいます 自分で何とかするべきなのでしょうがどうにもうまく行きません どこをどうすればいいのか教えていただけないでしょうか?

  • C#: 改行コードを含む文字列の長さ検出

    前略  下記のような改行コードを含む文字列について、”改行コードを1文字として、文字列の長さを取得”したいのですがどのようにすればよいのか教えてください。 string str = "aaa\nbbb\nccc\nddd\n"; str.Length では 改行コードを含まない値が取得されてしまいます。 以上、よろしくおねがいします。

  • awkで改行を除いて文字列を抜きだす

    こんにちは。 UNIXユーザーです。 awkでテキストファイルから行、列を指定して、文字列を抜き出し、それをシェルで変数として定義したいのですが、各行の最終列(最も右の列です)を指定すると、抜き出した文字列の末尾に’^M’がついてしまいます。 これが改行を意味するということは分かったのですが、これを取り除くためにはどうしたらよいでしょうか?? どなた様かご教授ください。 よろしくお願いいたします。

  • 文字列の改行を自動化したい

    文字列の改行を自動化したいのですが、textareaないのテキストで改行したいところをクリックすると、改行できるようにすることはできますか? javascriptでブラウザ上で行おうと思っています。 無理な場合は選択してエンターを押しまくるのが大変なのでせめてサブライムのように 改行したいところを一括選択してエンター一回でできるようにできないでしょうか? いつもサブライムで行うのですが面倒なので、rextareaないでサブライムのように一括置換や一括削除などもできると便利です。 もちろんメーラにそのような機能があったり、そのようなサービスがあればそれでも構わないので教えてください。

  • delphiにて 文字列の最後の改行を取り除く

    S :=TStringList.Create; で読みこんだテキスト S.Textの文字列の末尾に一個もしくは複数個の改行#13#10があった場合に取り除きたいのですが、 その方法がいまいちよくわかりません。 ずばり方法、アドバイス、tipsのサイトなど、 教えていただけないでしょうか?

  • 【C#】文字列の最後に改行を入れていく処理

    【C#】文字列の最後に改行を入れていく処理 C#初心者です。 ファイルを一行読み込むごとに、行の最後に改行\nを入れ、最後にその文字列を繋げ、出力したいのですが、やり方がわかりません。 結果は abcdefg hijklmn opqrstu のようになってほしいです。 分かる方いらっしゃいましたら教えていただけると幸いです。 宜しくお願いいたします。

  • (String)nullはnullではなく文字列?

    引数として、(String)nullを渡しているコードがあるのですが、 これは「null」ではなく文字列としての「null」を渡しているのでしょうか? ・Stringでキャストしていると思うのですが、nullもキャストできるのでしょうか? ・それとも何か特別な意味がある?

    • ベストアンサー
    • Java

専門家に質問してみよう