【问题标题】:How do I search for a keyword in a XML file using Java?如何使用 Java 在 XML 文件中搜索关键字?
【发布时间】:2020-09-22 12:29:30
【问题描述】:

我想使用 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 文件的资源,但很难找到在标签内搜索的方法。

【问题讨论】:

  • 使用像tutorialspoint.com/java_xml/java_dom_parse_document.htm这样的xml解析器和if eElement.getElementsByTagName("firstname").equals("Smith"){ System.out.println(eElement.getElementsByTagName("firstname")+ " " + eElement.getElementsByTagName("lastname") };这样的条件
  • 我的目标是使用 java.util.Scanner 并让用户输入名称并解析 XML 文件。

标签: java xml xml-parsing


【解决方案1】:

尝试以下解决方案。在这个例子中使用 DOM Parser 来解析 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"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 2017-11-09
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多