如何解决使用Java循环处理XML子节点
有人可以帮助我使用Java代码来处理此XML,并获得最后提到的输出。预先感谢。
XML文件:
<?xml version = "1.0"?>
<Oraganization Id="123" >
<state_name ID="1" name="Telangana">
<city_name ID="1" name="Hyderabad">
<school_name ID="1" school_name="Vidayalay_1">
<record>
<class>1</class>
<TeacheName>ABC</TeacheName>
<NumberOfStudents>100</NumberOfStudents>
</record>
<record>
<class>2</class>
<TeacheName>XYZ</TeacheName>
<NumberOfStudents>101</NumberOfStudents>
</record>
</school_name>
<school_name ID="2" school_name="Vidayalay_2">
<record>
<class>1</class>
<TeacheName>ABC</TeacheName>
<NumberOfStudents>100</NumberOfStudents>
</record>
<record>
<class>2</class>
<TeacheName>XYZ</TeacheName>
<NumberOfStudents>101</NumberOfStudents>
</record>
</school_name>
</city_name>
</state_name>
<state_name ID="2" name="Karnataka">
<city_name ID="1" name="Banglore">
<school_name ID="1" school_name="Bglr_Vidayalay_1">
<record>
<class>1</class>
<TeacheName>ABC</TeacheName>
<NumberOfStudents>100</NumberOfStudents>
</record>
<record>
<class>2</class>
<TeacheName>XYZ</TeacheName>
<NumberOfStudents>101</NumberOfStudents>
</record>
</school_name>
</city_name>
</state_name>
</Oraganization>
预期输出:
StateId名称CityId名称SchoolID SchoolName课程TeacherName NumberOfStudents
1 Telangana 1 Hyderabad 1 Vidayalay_1 1 ABC 100
1 Telangana 1 Hyderabad 1 Vidayalay_1 2 XYZ 101
1 Telangana 1 Hyderabad 2 Vidayalay_2 1 ABC 100
1 Telangana 1 Hyderabad 2 Vidayalay_2 2 XYZ 101
2卡纳塔克邦1班戈尔1 Bglr_Vidayalay_1 1 ABC 100
2卡纳塔克邦1孟加拉国1 Bglr_Vidayalay_1 2 XYZ 100
解决方法
下载XPath 3.1库(例如Saxon),然后执行XPath表达式
string-join(//record !
string-join(( ancestor::state_name ! (@ID,@name),ancestor::city_name ! (@ID,ancestor::school_name ! (@ID,@school_name),class,TeacheName,NumberOfStudents),' '),'\n')
其他人可能会耐心地向您展示使用DOM的解决方案,但我更喜欢简单的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。