从流式xml获取rootelement

时间:2013-08-06 08:31:09

标签: java xml regex streaming

我正在使用缓冲区传输xml文档。我将缓冲区设置得很低(50)以保持良好的性能。然后我使用缓冲的字符串尝试从xml中提取rootelement名称(在这种情况下,我需要在下面的xml中使用“abc”):

<?xml version="1.0"?>
<!--foobar-->
<!--<foo:bar></foo:bar>-->
<foo:abc xmlns:foo="url"><a><b>...

我应该只获取名称本身,而不使用别名。 此外,应忽略注释中的处理指令和xml标记。 当没有匹配时,我会让缓冲区变大并再次尝试匹配,直到我找到了元素。

我创建了一个完全正确的正则表达式,并返回了元素名称。使用$ 4的替换功能。 然而,当正则表达式不匹配任何东西时,它会挂起很长时间试图解决模式......

(?s)(.*?(<!--.*?-->)?.*?)*<(.*?:)?([^!\?].*?)((\s+|/).*)?>.*

问题似乎出现在试图匹配评论的部分

(.*?(<!--.*?-->)?.*?)*

但我无法弄清楚如何优化它,而不会破坏它...... 有什么想法吗?

0 个答案:

没有答案