csharp 【C#】XmlWriterでxmlを书くときのエスケープ文字に关するTips.WriteRaw + SecurityElement.Escapeがいい感じっぽい。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp 【C#】XmlWriterでxmlを书くときのエスケープ文字に关するTips.WriteRaw + SecurityElement.Escapeがいい感じっぽい。相关的知识,希望对你有一定的参考价值。

static void Main(string[] args)
{
	string text = ">=10^5 cfu/ml& < > \" '";

	using (var stream = new MemoryStream()) {
		using (var writer = XmlWriter.Create(stream, new XmlWriterSettings() { Indent = true, Encoding = Encoding.GetEncoding("Shift-JIS") })) {
			writer.WriteStartElement("root");

			// WriteRawだと生データのまま。 
			writer.WriteStartElement("WriteRaw");
			writer.WriteRaw(text); // <WriteRaw>>=10^5 cfu/ml& < > " '</WriteRaw>
			writer.WriteEndElement();

			// WriteStringは < > & はエスケープしてくれるが、 " ' はしてくれない。(属性値でWriteStringだとエスケープしてくれるっぽい。) 
			writer.WriteStartElement("WriteString");
			writer.WriteString(text); // <WriteString>&gt;=10^5 cfu/ml&amp; &lt; &gt; " '</WriteString>
			writer.WriteEndElement();

			// SecurityElement.Escape(string) は " ' もエスケープしてくれるので、これでエスケープしてWriteRawだといいかんじ。 
			writer.WriteStartElement("WriteRawAndEscape");
			writer.WriteAttributeString("id", "1");
			writer.WriteRaw(SecurityElement.Escape(text)); // <WriteRawAndEscape id="1">&gt;=10^5 cfu/ml&amp; &lt; &gt; &quot; &apos;</WriteRawAndEscape>
			writer.WriteEndElement();

			writer.WriteFullEndElement();
			writer.Flush();
			Console.WriteLine(Encoding.GetEncoding("Shift-JIS").GetString(stream.ToArray()));
		}
	}
}

以上是关于csharp 【C#】XmlWriterでxmlを书くときのエスケープ文字に关するTips.WriteRaw + SecurityElement.Escapeがいい感じっぽい。的主要内容,如果未能解决你的问题,请参考以下文章

csharp C#でDozensのDNSレコードを操作するref:http://qiita.com/nakaji/items/008090c0fc8173afce53

csharp AsyncOperationをUniTaskで待机する良い例

csharp 统一でキャラクターを移动させる

csharp 文字列を指定した长さで分割する。

csharp 透过した色を绮丽に表示できるパネル

csharp [ClosedXMLでExcel帐票] Excelで帐票のテンプレートを作成しておくことで,Excel帐票を作成します。ヘッダやフッタはExcelに记载した$ {templatename