У меня в настоящее время есть CGI-скрипт Perl, который анализирует входящие XML-запросы, используя XML :: Simple .Соглашение входящего XML выглядит следующим образом:
<?xml version="1.0" encoding="utf-8" ?>
<XMLRequest>
<CORE>
<CORE ID="14">
<PARENT_ID>1</PARENT_ID>
<CORE_ID>14</CORE_ID>
<FORM_ID>1423</FORM_ID>
<SECURITY_ID>1</SECURITY_ID>
<AREA_ID>3</AREA_ID>
<SUB_PARENT_ID>1</SUB_PARENT_ID>
<SUB_AREA_ID>1</SUB_AREA_ID>
</CORE>
<CORE ID="15">
<PARENT_ID>1</PARENT_ID>
<CORE_ID>15</CORE_ID>
<FORM_ID>1424</FORM_ID>
<SECURITY_ID>1</SECURITY_ID>
<AREA_ID>3</AREA_ID>
<SUB_PARENT_ID>1</SUB_PARENT_ID>
<SUB_AREA_ID>2</SUB_AREA_ID>
</CORE>
</CORE>
</XMLRequest>
Мне нужно перейти к парам имя / значение, и из соглашения компонент имени равен «CORE», а значением является значение «ID».».Однако проблема заключается в том, что в данном соглашении «CORE» представляет собой изменяющийся список возможных значений.Иными словами, XMLin анализирует этот XML так, что верхним и вторичным «CORE» являются хэши, а затем «ID» и остальные данные в виде массива хэшей.
Я пошел на это с точки зрения использования параметра KeyAttr в XML :: Simple и перечисления всех возможных вариантов 'CORE' для значений, но это список изменений, так что это невозможно.Другой просто использует вложенные операторы Whiles и For для перехода к необходимым компонентам, но это кажется нелогичным.Я начал смотреть на XML :: LibXML, но мне кажется, что это немного сложнее.
Предложения с благодарностью.