我有以下格式注释的文本文件:
<paragraph><weakness>Buffer</weakness> <weakness>Overflow</weakness>
in <location>client/mysql.cc</location> in <application>Oracle</application>
<application>MySQL</application> and <application>MariaDB</application>
<version>before</version> <version>5.2</version> <vulnerability>allows
</vulnerability> <vulnerability>remote</vulnerability>
<application>database</application> <application>servers</application>
...
...
我想要做的是创建一个Java代码来解析上面的文本文件并将其放在以下格式中:
Buffer weakness
overflow weakness
in O <--- 'O' means doesn't have annotation
Oracle application
MySQL application
...
...
我试图对文件进行标记,但问题是,我会再次进行解析和格式化,我可能会丢失一些有用的信息!!
请任何帮助!!
答案 0 :(得分:1)
您可以使用一些可以解析xml的XML解析器:例如:dom4j,XOM
如果您知道要查找的元素的XPATH,也可以使用JDK 1.5及更高版本中提供的Java Xpath Library从XML中提取内容。例如:为了提取所有弱点,您可以使用以下XPATH:/paragraph/weakness
选择最适合您目的的图书馆。
答案 1 :(得分:0)
将文本按空格拆分为String数组,然后对于数组中的每个字符串,请查看&#34;&lt;&#34;如果找到符号,则用Xpath解析它,否则根据需要写出值0和。
...
String split[] = readLine.split("\\s");
for (String string : split) {
if (string.indexOf("<") != -1) {
//XPath parsing
} else {
System.out.println(string + " O");
}
}
...