我有一个问题让我思考如何提高系统的速度和内存。 我将通过示例对其进行描述,我有这个文件有一些字符串:
<e>Customer</e>
<a1>Customer Id</a1>
<a2>Customer Name</a2>
<e>Person</e>
它类似于xml文件。
现在,我的解决方案就是当我阅读<e>Customer</e>
时,我将从那里读到最近的标签,然后从<e>Customer</e>
子串到最近的标签。
它使系统需要处理这么多。我只用正则表达式来做。我想我会像真正的编译器那样做一些阶段(词法分析,解析器)。
有什么想法吗?
提前致谢!
答案 0 :(得分:2)
正则表达式不是解析像这样的复杂结构的正确工具。由于您的文件看起来很像XML,因此添加缺少的文件以使其成为XML(即标题)可能是有意义的,并将结果提供给XML解析器。
XML解析器针对快速处理大量数据进行了优化(尤其是SAX类型)。如果转换为使用正则表达式处理大量文本来解析XML,则应该会看到性能的显着提高。
答案 1 :(得分:2)
如果您真的不想使用其中一个免费且可靠的xml解析器,那么真正快速的解决方案几乎肯定会涉及状态机。
请参阅此How to create a simple state machine in java问题,以获得良好的开端。
请确保非常有充分理由采取这条路线。
答案 2 :(得分:1)
不要把时间花在XML词法分析器/解析器上(它不值得)并使用那里已经存在的东西。
例如http://www.mkyong.com/tutorials/java-xml-tutorials/是一个很好的教程,只需使用谷歌。