2011-08-22 66 views
0

我有以下内容问题用java和正则表达式

<div name="hello"></div> 

一个文件,我需要一个Java代码,将读取该文件并打印字从XML文件中提取值*你好

这就是我想出了

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(); 
}}} 

但这段代码的问题是,如果我更改了文件,使之升ooks这样

<div name="hello" value="hi"></div> 

然后也被印刷,但我想打印

回答

1

尽管对这样的问题的最佳答案是倡导使用HTML或XML解析器来提取属性,但值得指出问题中的问题。

你得到打印,因为你是一个循环中印双方属性。您正在打印由双引号包围的所有内容。

此外,您只需要name属性的值。

Pattern.compile("name=\"([^\"]*)\""); 
+0

万岁!这工作。万分感谢 – bluebird

0

您的代码可能为你在XML做,但是你可能需要在你的代码更改与您的XML每隔改改工作:那么如下的模式应该形成。这可能令人筋疲力尽,因此我建议在Java中阅读XML文档的最佳方式是使用解析器。在Java中,我最近遇到了两个解析器:DOM和SAX。你应该在互联网上找到很多教程和例子。这些都是在那里我学到了很多东西: http://www.mkyong.com/java/how-to-read-xml-file-in-java-sax-parser/http://www.mkyong.com/java/how-to-read-xml-file-in-java-dom-parser/