0

有人可以用 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 Name CityId Name SchoolID SchoolName class TeacherName NumberOfStudents

1 Telangana 1 海得拉巴 1 Vidayalay_1 1 ABC 100

1 Telangana 1 海得拉巴 1 Vidayalay_1 2 XYZ 101

1 Telangana 1 海得拉巴 2 Vidayalay_2 1 ABC 100

1 Telangana 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

4

1 回答 1

0

下载 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 的解决方案,但我更喜欢简单的方法。

于 2020-08-21T13:48:49.123 回答