実現したいこと
C#でxmlファイル出力時、自己終了タグをスペース無しで出力したいです。
インデントはありの設定のままでできる方法を教えてください。
以下のようなxmlファイルを出力がしたいです。
<?xml version="1.0" encoding="Shift_JIS"?> <Styudent>
<English></English>
<Math></Math>
<No/>
</Styudent>
発生している問題・分からないこと
こちらが出力結果なのですが、Noタグのタグ名とスラッシュの間にスペースが入ってしまいます。
<?xml version="1.0" encoding="Shift_JIS"?> <Styudent> <English></English> <Math></Math> <No /> </Styudent>該当のソースコード
C#
1using (var writer = XmlWriter.Create(xml_full_nm, new XmlWriterSettings() { Indent = true, Encoding = Encoding.GetEncoding("Shift-JIS") })) 2 { 3 writer.WriteProcessingInstruction("xml", "version=\"1.0\" encoding=\"Shift_JIS\""); 4 5 writer.WriteStartElement("Styudent"); 6 this.SetElement(writer, "English", ""); 7 this.SetElement(writer, "Math", ""); 8 9 writer.WriteStartElement("No"); 10 writer.WriteEndElement(); 11 writer.WriteEndElement(); 12 } 13 14 private void SetElement(XmlWriter writer, string tagNm, string value) 15 { 16 17 writer.WriteStartElement(tagNm); 18 writer.WriteValue(value); 19 writer.WriteRaw(SecurityElement.Escape(value)); 20 writer.WriteEndElement(); 21 22 }
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
XmlWriterで標準的に出力される終了タグには空白が含まれる場合があることはわかりました。
補足
特になし
XmlWriterでひとつずつ書いてるならインデントレベルもわかるはずなので、WriteRawで直接書いちゃえばいいのでは?(そういう話ではない??
回答1件
あなたの回答
tips
プレビュー