Как выполнить поиск ключевого слова в XML-файле с помощью Java?

#java #xml #xml-parsing

#java #xml #синтаксический анализ XML

Вопрос:

Я хотел бы использовать Java для поиска в XML-файле слова «Smith» и вывода в консоли «Smith, Mike»

 <?xml version = "1.0"?>
<class>
   <student rollno = "1">
      <firstname>Doe</firstname>
      <lastname>Jane</lastname>
   </student>
   
   <student rollno = "2">
      <firstname>Smith</firstname>
      <lastname>Mike</lastname>
   </student>
   
   <student rollno = "3">
      <firstname>Fonda</firstname>
      <lastname>Jane</lastname>
   </student>
</class>
  

Я нашел ресурсы в Интернете для запроса всего XML-файла, но мне было трудно найти способы поиска внутри тегов.

Комментарии:

1. используйте синтаксический анализатор xml, как здесь tutorialspoint.com/java_xml/java_dom_parse_document.htm с некоторым условием, таким как if eElement.getElementsByTagName("firstname").equals("Smith"){ System.out.println(eElement.getElementsByTagName("firstname") " " eElement.getElementsByTagName("lastname") };

2. Моя цель — использовать java.util. Сканируйте и попросите пользователя ввести имя и проанализировать XML-файл.

3. вы можете использовать руководство в комментарии и выполнить логическое условие с помощью сканера ввода с помощью чего-то вроде `if getElementByTagName(«firstname»).equals(scan.next())`.

Ответ №1:

попробуйте следующее решение. в этом примере используется анализатор DOM для синтаксического анализа XML-файла.

 String firstName = "";
Scanner scanner = new Scanner(System.in);

System.out.print("Enter the first name: ");
firstName = scanner.nextLine();
        
try {
    File inputFile = new File("input.xml");
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document document = builder.parse(inputFile);
    document.getDocumentElement().normalize();
    NodeList nodeList = document.getElementsByTagName("student");
    for (int i = 0; i < nodeList.getLength(); i  ) {
        Element element = (Element) nodeList.item(i);
        if(element.getElementsByTagName("firstname").item(0).getTextContent().equals(firstName)){
            System.out.println("Full Name : " element.getElementsByTagName("firstname").item(0).getTextContent() " " 
                                                    element.getElementsByTagName("lastname").item(0).getTextContent());
            break;
        }
    }
} catch (Exception e) {
    e.printStackTrace();
}
  

вывод на консоль,

 Enter the first name: Smith
Full Name : Smith Mike // when enter the first name as "Smith"