Как упростить XML, чтобы он не был таким длинным в области тега <BuildVerification>

У меня есть файл конфигурации XML, и со всеми включенными в него процессами длина моего XML-файла превышает 1000 строк. Моя команда жалуется, что размер файла затрудняет обновление. Есть ли у кого-нибудь идеи о том, как сократить/упростить XML-документ?

Вот как выглядит формат xml:

<?xml version = "1.0" encoding = "UTF-8"?>
<BuildVerficationRoot>
<Configuration>
    <Value Name = "emailFrom">[email protected]</Value>
    <Value Name = "admin_list">[email protected]</Value> 
    <Value Name = "distribution_list">[email protected]</Value> 
    <Value Name = "SmtpMailClient">info.co.net</Value>
    <Value Name = "verboseLogFileName">VerifyBuildVerbose.txt</Value>
    <Value Name = "statsLogProcessVerFileName">Stats.txt</Value>
    <Value Name = "project">proj</Value>
    <Value Name = "version">1.0</Value>
    <Value Name = "publishHeader">PublishDestination</Value>
</Configuration>
<BuildVerification>
    <codeFreezeTime>19:00</codeFreezeTime>
    <build>
        <BuildMachine>mach-1</BuildMachine>
            <Process>
                <ProcessName>Version</ProcessName>
                <startTimeHeader>StartTime</startTimeHeader>
                <endTimeHeader>EndTime</endTimeHeader>
                <failureColumns>ErrorDescription</failureColumns>
                    <Conditions>
                        <Condition
                            name='VersionFile' value = "\view\dev\Retail\filename.cs">
                        </Condition>
                    </Conditions>
                    <SuccessCriteria>
                        <field>Status</field>
                        <comparison>equal</comparison>
                        <value>Success</value>
                    </SuccessCriteria>
            </Process>
<!--there are several build machines and each build machine has several processes under it, so this is what is many many lines -->
    </build>
</BuildVerification>
</BuildVerficationRoot>

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

Ищем упрощенный XML, в котором меньше строк.

Дополнительную информацию об этом проекте, например о классах, используемых для хранения информации, указанной в LINQ, см. в разделе классы для LINQ.

Область XML, которую необходимо сократить, находится в теге, который очень длинный. Он работает отлично, просто команда считает, что XML слишком длинный и громоздкий. Мы не хотим использовать формат для хранения данных, отличный от XML, мы просто хотим сделать XML более компактным.

Я видел минификатор xml, но кажется, что он просто удаляет разрывы строк, поэтому все это ужасно отформатировано.

Чтобы определить, как удалить/изменить что-то, кроме пробелов, потребуется знать, какие теги/данные могут быть изменены или удалены, но никто здесь не в состоянии решить это.

Scott Hunter 26.06.2024 17:28
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
1
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете сэкономить много строк, используя атрибуты вместо узлов. Таким образом, вы выравниваете структуру. Имейте в виду, что вам придется изменить код, читающий XML. Возможно, вы могли бы использовать сериализатор XML для чтения XML. https://learn.microsoft.com/en-us/dotnet/standard/serialization/examples-of-xml-serialization

<?xml version = "1.0" encoding = "UTF-8"?>
<BuildVerification>
    <Config emailFrom = "[email protected]" 
            adminList = "[email protected]" 
            distributionList = "[email protected]" 
            SmtpMailClient = "info.co.net" 
            verboseLogFileName = "VerifyBuildVerbose.txt" 
            statsLogProcessVerFileName = "Stats.txt" 
            project = "proj" 
            version = "1.0" 
            publishHeader = "PublishDestination" />
    <CodeFreeze time = "19:00" />
    <Build machine = "mach-1">
        <Process name = "Version" 
                 startTimeHeader = "StartTime" 
                 endTimeHeader = "EndTime" 
                 failureColumns = "ErrorDescription">
            <Condition name = "VersionFile" value = "\view\dev\Retail\filename.cs" />
            <SuccessCriteria field = "Status" comparison = "equal" value = "Success" />
        </Process>
    </Build>
</BuildVerification>

Кроме того, вы можете удалить значения по умолчанию. Например, если failureColumns часто является ErrorDescription, вы можете установить это в своем коде по умолчанию, если оно не объявлено в xml. Это может работать со всеми значениями в вашем XML.

Это может быть выполнимо. Спасибо, Себастьян. Я мог бы удалить errorColumns, где таблица журнала не имеет индикации сбоя, но имена столбцов сильно различаются, а иногда и имеют несколько имен столбцов.

Michele 26.06.2024 19:14

причина, по которой у меня были условия, заключалась в том, что у меня есть несколько условий, и пара из них у меня есть. То же самое и с критериями успеха, которых у меня может быть кратно.

Michele 26.06.2024 19:51

Другие вопросы по теме