使用java和正则表达式从xml文件提取值时出现问题
我有一个包含以下内容的文件使用java和正则表达式从xml文件提取值时出现问题,java,regex,Java,Regex,我有一个包含以下内容的文件 <div name="hello"></div> 我需要一个java代码来读取这个文件并只打印单词*hello 这就是我想到的 while (( line = bf.readLine()) != null) { linecount++; int indexfound = line.indexOf
<div name="hello"></div>
我需要一个java代码来读取这个文件并只打印单词*hello
这就是我想到的
while (( line = bf.readLine()) != null)
{
linecount++;
int indexfound = line.indexOf("<div name");
if (indexfound > -1) {
Pattern p = Pattern.compile("\"([^\"]*)\"");
Matcher m = p.matcher(line);
while (m.find()) { System.out.println(m.group(1)); }
}
}
bf.close();
}} catch (IOException e) {
e.printStackTrace();
}}}
while((line=bf.readLine())!=null)
{
linecount++;
int indexfound=line.indexOf(“您可以使用java中可用的任何DOM库,如jDOM或Dom4j。您试图解析的文件是xml(HTML)这些DOM库是为解析此类xml文件而开发的。很容易入门。请遵循本网站上的教程。虽然对此类问题的最佳答案是提倡使用HTML或xml解析器来提取属性,但值得指出问题中的问题
您正在打印这两个属性,因为您正在while循环中打印。您正在打印被双引号包围的所有内容
此外,您只需要name属性的值。因此,您的模式应按如下方式形成:
Pattern.compile("name=\"([^\"]*)\"");
您的代码可能适用于您在XML中所做的更改,但是您可能需要在XML中的每一次其他更改中对代码进行更改。这可能会让人筋疲力尽,因此我建议在Java中阅读XML文档的最佳方法是使用解析器。在Java中,我最近遇到了两种解析器:DOM和SAX。您应该会找到很多教程互联网上的ls和示例;这些是我学到很多东西的地方:
和
Pattern.compile("name=\"([^\"]*)\"");