使用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=\"([^\"]*)\"");