c# - 从字符串 EOT 逗号 ETX 中删除控制字符序列
问题描述
我有一些 xml 文件,其中一些控制序列包含在文本中: EOT,ETX(anotherchar) EOT 逗号 ETX 后面的另一个字符并不总是存在,也不总是相同。实际示例:
<FatturaElettronicaHeader xmlns="">
</F<EOT>‚<ETX>èatturaElettronicaHeader>
<EOT>
04 char 和03在哪里<ETX>
。因为我必须解析 xml,这实际上是一个大问题。这是我从未听说过的某种编码吗?
我试图从我的字符串中删除所有控制字符,但它会留下仍然不需要的逗号。如果我使用Encoding.ASCII.GetString(file);
不需要的字符将替换为“?” 这很容易删除,但它仍然会留下一些导致解析问题的不需要的字符:
<BIC></WBIC>
像这样的东西。
string xml = Encoding.ASCII.GetString(file);
xml = new string(xml.Where(cc => !char.IsControl(cc)).ToArray());
因此,我需要删除所有此类控制字符序列才能解析此类文件,并且我不确定如何以编程方式检查字符是否是控制序列的一部分。
解决方案
抱歉延迟响应,但我认为问题的根源可能是对 p7m 文件的错误解码。我认为最初您尝试清理的 xml 文件是 .xml.p7m 文件。我相信清理文件的正确方法是使用 Java 或 dotnet 中的 Buoncycastle 等库和 CmsSignedData 类。
CmsSignedData cmsObj = new CmsSignedData(content);
if (cmsObj.SignedContent != null)
{
using (var stream = new MemoryStream())
{
cmsObj.SignedContent.Write(stream);
content = stream.ToArray();
}
}