制御文字に苦戦したお話

とある案件ではまったことを備忘録として書き起こしておく。

例外はこんな感じで出ていた。

(16 進数値 0x0C) は無効な文字です。
場所 System.Xml.XmlEncodedRawTextWriter.InvalidXmlChar(Int32 ch, Char* pDst, Boolean entitize)
場所 System.Xml.XmlEncodedRawTextWriter.WriteElementTextBlock(Char* pSrc, Char* pSrcEnd)
場所 System.Xml.XmlEncodedRawTextWriter.WriteString(String text)
場所 System.Xml.XmlEncodedRawTextWriterIndent.WriteString(String text)
場所 System.Xml.XmlWellFormedWriter.WriteString(String text)
場所 System.Xml.Linq.ElementWriter.WriteElement(XElement e)
場所 System.Xml.Linq.XElement.WriteTo(XmlWriter writer)
場所 System.Xml.Linq.XNode.GetXmlString(SaveOptions o)
場所 System.Xml.Linq.XNode.ToString()

XElementの値に改ページがあったため
変数で宣言したXElement型をtostringしたら例外が出ていた。

対策

今回はこんな感じに対策
改ページのみの決め打ち対策なのでほかにも制御文字がはいっていると例外が出る恐れがあるがそれは別途紹介する予定。