Java 基于条件的Dom4j解析xml

Java 基于条件的Dom4j解析xml,java,xml,xml-parsing,sax,dom4j,Java,Xml,Xml Parsing,Sax,Dom4j,我需要解析以下XML文件,并且需要选择person_type value=1的学生的名字。我在java项目中使用dom4j,但我无法找到基于person_类型的值提取名字的解决方案。任何帮助都将不胜感激 <?xml version="1.0"?> <class> <student> <firstname>dinkar</firstname> <lastname>kad</lastname> <nick

我需要解析以下XML文件,并且需要选择person_type value=1的学生的名字。我在java项目中使用dom4j,但我无法找到基于person_类型的值提取名字的解决方案。任何帮助都将不胜感激

<?xml version="1.0"?>
<class>
<student>
 <firstname>dinkar</firstname>
 <lastname>kad</lastname>
 <nickname>dinkar</nickname>
 <marks>85</marks>
 <person_types>
  <person_type>1</person_type>
  <person_description>POC</person_description>
 </person_types>
</student>
<student>
 <firstname>Vaneet</firstname>
 <lastname>Gupta</lastname>
 <nickname>vinni</nickname>
 <marks>95</marks>
 <person_types>
  <person_type>1</person_type>
  <person_description>Assistant</person_description>
 </person_types>
</student>
<student>
 <firstname>jasvir</firstname>
 <lastname>singn</lastname>
 <nickname>jazz</nickname>
 <marks>90</marks>
 <person_types>
  <person_type>1</person_type>`
  <person_description>Leader</person_description>
 </person_types>
</student>
</class>

丁卡尔
卡德
丁卡尔
85
1.
POC
瓦尼特
古普塔
维尼
95
1.
助手
贾斯维尔
辛格
爵士乐
90
1`
领导
公共静态void main(字符串[]args){
试一试{
File inputFile=新文件(“input.txt”);
SAXReader=新SAXReader();
文档=reader.read(inputFile);
System.out.println(“根元素:”
+document.getRootElement().getName());
Element classElement=document.getRootElement();
列表节点=文档。选择节点(“/class/student”);
System.out.println(“-------------------------------”;
用于(节点:节点){
if(“1”.equals(node.selectSingleNode(“person\u type”).selectSingleNode(“person\u type”).getText()){
System.out.println(“\n当前元素:”
+node.getName());
System.out.println(“学生卷号:
+node.valueOf(“@rollno”);
System.out.println(“名字:”+node.selectSingleNode(“名字”).getText());
System.out.println(“姓氏:”+node.selectSingleNode(“姓氏”).getText());
System.out.println(“名字:”+node.selectSingleNode(“昵称”).getText());
System.out.println(“Marks:+node.selectSingleNode(“Marks”).getText());
}
}
}捕获(文档异常){
e、 printStackTrace();
}
}

googleit。有无数的解决方案,谢谢你…会的,谢谢朋友!!!我不知道我们可以这样航行。你为我节省了很多工作!!:)
 public static void main(String[] args) {
        try {
           File inputFile = new File("input.txt");
           SAXReader reader = new SAXReader();
           Document document = reader.read( inputFile );

           System.out.println("Root element :" 
              + document.getRootElement().getName());

           Element classElement = document.getRootElement();

           List<Node> nodes = document.selectNodes("/class/student" );
           System.out.println("----------------------------");
           for (Node node : nodes) {
             if("1".equals(node.selectSingleNode("person_types").selectSingleNode("person_type").getText())){
                 System.out.println("\nCurrent Element :" 
                         + node.getName());
                      System.out.println("Student roll no : " 
                         + node.valueOf("@rollno") );
                      System.out.println("First Name : " + node.selectSingleNode("firstname").getText());
                      System.out.println("Last Name : " + node.selectSingleNode("lastname").getText());
                      System.out.println("First Name : " + node.selectSingleNode("nickname").getText());
                      System.out.println("Marks : " + node.selectSingleNode("marks").getText());
             }
           }
        } catch (DocumentException e) {
           e.printStackTrace();
        }
     }