1

我找到了一种清除无效字符的 XML 文件的方法,效果很好,但速度有点慢。清洁需要大约 10-20 秒,用户不喜欢。

使用 streamread/write 创建一个干净的文件然后使用 xmlreader 似乎浪费了大量时间,是否可以在 XMLread 期间清理行或至少使用 streamReader 作为 XMLreader 的输入以节省保存文件的时间?

我试图让创建数据库的团队在上传之前创建干净的文件,但这是一个缓慢的过程......

XmlReaderSettings settings = new XmlReaderSettings { CheckCharacters = false};
cleanDatabase = createCleanSDDB(database);
using (XmlReader sddbReader = XmlReader.Create(cleanDatabase, settings))
{ //Parse XML... }

    private string createCleanSDDB(String sddbPath)
    {
        string fileName = getTmpFileName(); // get a temporary file name from the OS
        string line;
        string cleanLine;

        using (StreamReader streamReader = new StreamReader(sddbPath, Encoding.UTF8))
        using (StreamWriter streamWriter = new StreamWriter(fileName))
        {
            while ((line = streamReader.ReadLine()) != null)
            {
                cleanLine = getCleanLine(line);
                streamWriter.WriteLine(cleanLine);
            }
        }

        return fileName;
    }

    private string getCleanLine(string dirtyLine)
    {
        const string regexPattern = @"[^\x09\x0A\x0D\x20-\xD7FF\xE000-\xFFFD\x10000-x10FFFF]";
        string cleanLine = Regex.Replace(dirtyLine, regexPattern, "");

        return cleanLine;
    }
4

0 回答 0