1

我有一个问题让我思考如何提高系统的速度和内存。我将通过示例来描述它,我有这个文件,其中包含一些字符串:

<e>Customer</e>
    <a1>Customer Id</a1>
    <a2>Customer Name</a2>
<e>Person</e>

它类似于 xml 文件。

现在,我的解决方案是,当我阅读时<e>Customer</e>,我会从它读取到最近的标签,然后从子串读取到<e>Customer</e>最近的标签。

它使系统需要处理这么多。我只使用正则表达式来做到这一点。我想我会像真正的编译器一样做同样的事情,它有一些阶段(词法分析,解析器)。

有任何想法吗?

提前致谢!

4

3 回答 3

2

正则表达式不是解析此类复杂结构的正确工具。由于您的文件看起来很像 XML,因此添加缺少的内容以使其成为 XML(即标题)并将结果提供给 XML 解析器可能是有意义的。

XML 解析器针对快速处理大量数据(尤其是 SAX 类型)进行了优化。如果您从使用正则表达式处理大量文本切换到解析 XML,您应该会看到性能显着提高。

于 2013-04-05T16:08:44.897 回答
2

如果您真的不想使用免费且可靠的 xml 解析器之一,那么真正快速的解决方案几乎肯定会涉及状态机。

请参阅此如何在 java 中创建简单状态机问题以获得良好的开端。

请务必有充分的理由选择这条路线。

于 2013-04-05T16:12:31.493 回答
1

只是不要把时间花在 XML 词法分析器/解析器上(它不值得),而是使用已经存在的东西。

例如http://www.mkyong.com/tutorials/java-xml-tutorials/是一个很好的教程,只需使用 google。

于 2013-04-05T16:07:53.470 回答