Проблема с извлечением значений из файла XML с использованием Java и регулярных выражений - PullRequest
0 голосов
/ 22 августа 2011

У меня есть файл со следующим содержимым

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

, и мне нужен код Java, который будет читать этот файл и печатать только слово * привет

Это то, что я придумал

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

, но проблема с этим кодом заключается в том, что если я внесу изменения в файл так, чтобы он выглядел так

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

, то привет также печатается, но я хочу, чтобы печатался только привет

Ответы [ 3 ]

1 голос
/ 22 августа 2011

Хотя лучшим ответом на подобные вопросы является пропаганда использования синтаксического анализатора HTML или XML для извлечения атрибутов, стоит указать на проблему в вашем вопросе.

Вы получаете оба атрибута , поскольку вы печатаете внутри цикла , а . Вы печатаете все, что заключено в двойные кавычки.

Кроме того, вам нужно только значение атрибута name. Таким образом, ваш шаблон должен быть сформирован следующим образом:

Pattern.compile("name=\"([^\"]*)\"");
0 голосов
/ 22 августа 2011

Ваш код может работать для изменений, которые вы внесли в XML, однако вам могут потребоваться изменения в вашем коде при каждом другом изменении вашего XML.Это может быть утомительно, и поэтому я предлагаю лучший способ прочитать документ XML в Java - это использовать парсеры.В 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/

0 голосов
/ 22 августа 2011

Вы можете использовать любую из библиотек DOM, доступных в Java, например, jDOM или Dom4j. Файл, который вы пытаетесь проанализировать, представляет собой файл XML (HTML), эти библиотеки DOM разработаны для анализа таких файлов XML. Это легко начать. Следуйте инструкциям на этом сайте. http://www.java -samples.com / showtutorial.php? Tutorialid = 152

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...