Java 如何在不使用解析器(dom、sax)的情况下读取xml数据?
我是xml新手。我必须在不使用解析器的情况下读取xml文件的所有元素。Java 如何在不使用解析器(dom、sax)的情况下读取xml数据?,java,xml,Java,Xml,我是xml新手。我必须在不使用解析器的情况下读取xml文件的所有元素。 请帮助我。我可以用正则表达式来使用字符串函数。但是我对它们不熟悉。因此,请帮助我给我一个代码来读取至少2个xml元素,一个是root,另一个是child。您可以使用标准的java.io包,特别是java.io.FileReader和java.io.BufferedReader 这将使您能够读取xml文件并获取标准java.lang.String的内容 获得字符串后,可以使用正则表达式过滤xml类型的数据 这绝对不是编写xml
请帮助我。我可以用正则表达式来使用字符串函数。但是我对它们不熟悉。因此,请帮助我给我一个代码来读取至少2个xml元素,一个是root,另一个是child。您可以使用标准的
java.io
包,特别是java.io.FileReader
和java.io.BufferedReader
这将使您能够读取xml文件并获取标准java.lang.String
的内容
获得字符串后,可以使用正则表达式过滤xml类型的数据
这绝对不是编写xml解析器的最有效方法,也没有涵盖标准xml解析器将提供的所有解析功能。假设您的xml有效且格式正确,并且不能嵌套同名的标记,您可以使用以下正则表达式匹配整个标记,例如,对于名为
child
的标记:
<\s*child(?:(?!<\s*/\s*child).)+<\s*/\s*child\s*>
首先,您的示例不是xml。第二,要读取这些元素,如果不使用xml解析器,则需要编写一个解析器来读取它们。这意味着你正在重新发明轮子。这不是一件好事。不使用xml解析器有什么原因吗?是的,这是我的任务…所以你的任务基本上是编写一个xml解析器?不像我使用解析器时那样,我必须获取所有元素。两个输出都应该匹配。我可以将字符串函数与正则表达式一起使用。但我不确定是否需要使用解析器,但我应该得到和使用解析器时相同的输出。好的,但我不确定字符串表达式和正则表达式。你能给我一些关于正则表达式在stringsSee@Tim Pietzcker中的用法的建议吗?不幸的是没有。但每当我“做”正则表达式时,我都会使用这个方便的工具:我才意识到我根本没有回答这个问题。无论如何,谢谢你的支持投票。Premshree Pillai 100000与XML上使用的所有正则表达式一样,此正则表达式仅在被匹配的元素不包含也将被匹配的子元素的情况下工作。应用于
,它将不正确地匹配
@Robert Rossney:这就是为什么我在第一句话中写道,只有当相同名称的标记不能嵌套时,这才有效。
<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