プロが教える店舗&オフィスのセキュリティ対策術

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>

上記の文を下記の様にしたいです。

A 回答 (1件)

>RichTextBox内で改行しても、xml文では1行文のままで出力されてしまいます。


え?出力されたXMLをエディタでみたら
<string>こんにちは
はじめまして</string>
になりそうだけど。だから「改行が反映されていない」ように見えるのは受け取り側がエレメント内の改行を受け取っていない(IEなど、そういう動きをしているのはかなりの割合であります。)

だから、改行を反映させるためには。
<string>こんにちは</string>
<string size="10">はじめまして</string>
じゃ内といけないんでしょうけど、XmlTextWriter の内容を理解しているなら上のコードでなぜこういう風にならないかは理解できますよね。

とりあえず、
foreach(String s in RichTextBox.Text.split(改行コード))
で改行コードで分解し、それごとにエレメントを書けばいいんじゃないかと。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A