如何在不使用解析器(dom,sax)的情况下读取xml数据?

时间:2010-11-10 10:30:21

标签: java xml

我是xml的新手。我必须在不使用解析器的情况下读取xml文件的所有元素。 请帮帮我。我可以使用正则表达式的字符串函数。但我不熟悉它们。所以请帮我给我一个代码来读取至少2个xml元素,一个是root,另一个是child。

2 个答案:

答案 0 :(得分:1)

您可以使用标准java.io包,特别是java.io.FileReaderjava.io.BufferedReader

这将使您能够阅读xml文件并将内容作为标准java.lang.String

获得String后,您可以使用正则表达式过滤掉xml类型数据。

这绝对不是编写xml解析器的最有效方法,并不能完全涵盖标准xml解析器将提供的所有解析功能。

答案 1 :(得分:1)

假设您的XML有效且格式正确,并且无法嵌套相同名称的标记,您可以使用以下正则表达式匹配整个标记,例如对于名为child的标记:< / p>

<\s*child(?:(?!<\s*/\s*child).)+<\s*/\s*child\s*>

请注意,要在Java字符串中使用它,您必须将所有反斜杠加倍;并且您希望使用Pattern.DOTALL选项编译正则表达式。

说明(为清晰起见,删除了可选的空格标记):

<child       # match opening tag
(?:          # then match...
 (?!</child) # as long as it's not at the start of the closing tag:
 .           # any character
)+           # as many times as possible
</child>     # then match the closing tag