首页 > 解决方案 > 从字符串 EOT 逗号 ETX 中删除控制字符序列

问题描述

我有一些 xml 文件,其中一些控制序列包含在文本中: EOT,ETX(anotherchar) EOT 逗号 ETX 后面的另一个字符并不总是存在,也不总是相同。实际示例:

<FatturaElettronicaHeader xmlns="">
</F<EOT>‚&lt;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());

因此,我需要删除所有此类控制字符序列才能解析此类文件,并且我不确定如何以编程方式检查字符是否是控制序列的一部分。

标签: c#xml

解决方案


抱歉延迟响应,但我认为问题的根源可能是对 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();
                    }
                }

推荐阅读