2011-06-27 11 views
3

私はXMLを編集するのが初めてで、私が走っている問題にいくつか質問があります。XmlTextWriterに関するいくつかの質問

最初に:writer.WriteEndElement();の後に新しい行を追加するにはどうすればよいですか?私はwriter.WriteWhitespace("\n");を使って例を見つけましたが、それは新しい行を作っていないようです。

2番目:これは以前の問題のために何もしていない可能性がありますが、私は最後にこれを使ってコードをインデントしたいと考えています:writer.Formatting = Formatting.Indented;、しかしそれは何もしていないようです新しい行)。

3番目:これを前のファイルに追加するので、私はこの新しいデータを追加できるように私の主な親の終了タグを取り除きました。私は最終的なタグを閉じるためにwriter.WriteEndElement();を持つことができたと思っていましたが、私はそれを書いているときにオープニングタグを作成していないので、オープンタグがあることを認識していないようです。これを行うには良い方法がありますか、コードの末尾に</closingTagName>と書くだけで終わるべきですか?

ご意見やご提案をいただければ幸いです。

+1

まずあなたがすべてで常に両方が終了タグを開くと、完全な要素を追加...開始タグの孤児を残すべきではありませんが...不特定多数の要素がある場合は、それらの要素を作成して親要素に追加します。 –

+0

私はそれを削除する権利があるB4私はそれに書き込みを開始してからもう一度閉じます – Johnston

答えて

2

これを試してみてください:

using (var stringWriter = new StringWriter()) 
using (var writer = new XmlTextWriter(stringWriter)) 
{ 
    writer.WriteRaw("</closingTagName>"); 

    writer.Formatting = Formatting.Indented; 
    writer.Indentation = 10; 
    writer.WriteStartElement("Element1"); 

    writer.WriteStartElement("Element2"); 
    writer.WriteString("test"); 
    writer.WriteEndElement(); 

    writer.WriteEndElement(); 

    writer.WriteWhitespace(Environment.NewLine); 

    writer.WriteStartElement("Element3"); 
    writer.WriteEndElement(); 

    var result = stringWriter.ToString(); 

結果:

</closingTagName> -- Closing tag 
<Element1> 
      <Element2>test</Element2> -- Line with the ident 10. 
</Element1> 
       -- extra new line 
<Element3 /> 
+0

クローズタグは機能しましたが、スペーシング/フォーマットはまだありません – Johnston

+1

@Johnston - それはうまくいかなかったということですか?私はこのコードを貼り付ける前にこのコードをテストし、 'result'文字列の出力も貼り付けました。 –

+1

@ジョンストン - また、私は識別と改行の両方を使用することをお勧めしません。なぜなら、これのために作家が混乱するからです。アイデンティティだけを使用してください。 –

関連する問題