#java #xml #dom #xmldom #ixmldomnode
#java #xml #dom #xmldom #ixmldomnode
Вопрос:
Может ли кто-нибудь помочь мне с 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>
Ожидаемый результат:
Идентификатор состояния Идентификатор города Идентификатор школы имя_школы имя_учителя класса Количество студентов
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 Телангана 1 Хайдарабад 2 Vidayalay_2 2 XYZ 101
2 Карнатака 1 Банглор 1 Bglr_Vidayalay_1 1 ABC 100
2 Карнатака 1 Банглор 1 Bglr_Vidayalay_1 2 XYZ 100
Ответ №1:
Загрузите библиотеку XPath 3.1 (например, Saxon) и затем выполните выражение XPath
string-join(//record !
string-join(( ancestor::state_name ! (@ID, @name),
ancestor::city_name ! (@ID, @name),
ancestor::school_name ! (@ID, @school_name),
class, TeacheName, NumberOfStudents), ' '), 'n')
У кого-то другого может хватить терпения показать вам решение с использованием DOM, но я предпочитаю простой способ.