Нужны советы по созданию синтаксического анализатора XML, основанного на обычном файловом парсере - PullRequest
0 голосов
/ 19 сентября 2019

Мне нужно реализовать класс синтаксического анализатора для файлов XML в python, и мне нужно сделать его производным классом из следующего (неполного) класса.

class AbstractLogsParser(object):
    # Different test statuses
    TEST_RES_PASS = 0
    TEST_RES_FAIL = 1
    TEST_RES_SKIP = 2
    def __init__(self, logs_extension):
        """
        Base class constructor.
        @param    logs_extension  Extension of log files to parse.
        """
        self._logs_ext = '.'+logs_extension
    def get_result_by_type(self, result_type): 
        """
        Returns number of passed, failed or skipped tests.
        @param    result_type          Type of results to return.
        """
        return -1
    def generate_detailed_report(self):
        """
        Generates detailed report on each test suite.
        """
        raise Exception("generate_detailed_report is not implemented")
    def process_logs(self, folder):
        """
        Parses all log files with target extension in the specified folder. @param folder Folder to look up for log files.
        """
        raise Exception("process_logs is not implemented")

Производный синтаксический анализатор XML будет иметьметоды для различных метрик и статистики, но кажется, что фактический анализ должен происходить в базовом классе.Первоначально я хотел использовать ElementTree , чтобы сделать это, но я не понимаю, как кодировать методы в базовом классе для размещения унаследованного класса XML-анализатора, который мне нужно построить.

Конструктор AbstractLogsParser принимает расширение файла в качестве аргумента, поэтому метод process_logs должен иметь возможность анализировать файлы разных форматов.Было бы разумно использовать регулярные выражения для разбора файлов журнала построчно, предполагая, что ключевые слова в файлах журнала всегда одинаковы?Я просто ищу несколько советов о том, как правильно реализовать реализацию.

Вот пример файла журнала XML, который должен обрабатывать анализатор.

<test_results test_suite="GAP_CONN_001"> 
    <environment>LOCAL</environment> 
    <debug>Test suite start</debug>
    <tc_result id="conn_bv_001" result="PASS">
        <debug>Run 2 sequences</debug> 
    </tc_result>
    <tc_result id="conn_bv_002" result="FAIL" /> 
    <tc_result id="conn_bv_002" result="PASS" /> 
    <tc_result id="conn_bv_004" result="SKIP">
        <reason>No pass criteria</reason>
    </tc_result>
</test_results>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...