Perl XML::LibXML - прочитать значение узла из элемента, если значение узла его родительского элемента соответствует строке

Я использую Perl XML::LibXML для извлечения некоторых данных из XML, как показано ниже.

XML:

<root>
<child1>
    <child2>
        <common_tag_name>
            <name>name_level1_name1</name>
            <attribute>
              <name>name_level2_name1</name>
              <value>some_data1</value>
            </attribute>
            <attribute>
              <name>name_level2_name2</name>
              <value>some_data2</value>
            </attribute>
            <attribute>
              <name>name_level2_name3</name>
              <value>some_data3</value>
            </attribute>
        </common_tag_name>

        <common_tag_name>
            <name>name_level1_name2</name>
            <attribute>
              <name>name_level2_name1</name>
              <value>some_data4</value>
            </attribute>
            <attribute>
              <name>name_level2_name2</name>
              <value>some_data5</value>
            </attribute>
            <attribute>
              <name>name_level2_name3</name>
              <value>some_data6</value>
            </attribute>
        </common_tag_name>
    </child2>
</child1>
</root>

Проблема:

Находить ; если /common_tag_name/name == "name_level1_name1" и /common_tag_name/name/attribute/name == "name_level2_name1", то извлеките /common_tag_name/name/attribute/value т.е. я должен получить "some_data1"

Следует зациклить это, чтобы прочитать same_data *

Возможно ли это с XML::LibXML?


person Shreyas    schedule 19.10.2016    source источник
comment
Вы говорите Perl в названии, но помечаете Python. Который из них?   -  person simbabque    schedule 08.11.2016


Ответы (1)


Да, это можно сделать с помощью XML::LibXML.

person simbabque    schedule 08.11.2016