сценарий удара для редактирования XML-файла

Я использую реализацию этого интерфейса:

public interface IResolver
{
    object Resolve(Type type);
    object Resolve(string name);

    T Resolve<T>() where T : class;
    T Resolve<T>(string name) where T : class;
}

, Который на самом деле обертывается в глобальный статический класс, например:

public static class Resolver // : IResolver
{
    private static IResolver _current;

    public static object Resolve(Type type)
    {
        return Current.Resolve(type);
    }

    public static object Resolve(string name)
    {
        return Current.Resolve(name);
    }

    public static T Resolve<T>() where T : class
    {
        return Current.Resolve<T>();
    }

    public static T Resolve<T>(string name) where T : class
    {
        return Current.Resolve<T>(name);
    }

    private static IResolver Current
    {
        get
        {
            if (_current == null)
            {
                _current = new SpringResolver();
            }

            return _current;
        }
    }
}

Также я пытаюсь следовать, простое правило - используют класс Преобразователя максимально меньше, вместо этого вводят сервисы в объектах, которым нужны те сервисы.

10
задан Community 12 November 2014 в 15:43
поделиться

4 ответа

В зависимости от того, что вы хотите сделать, вы можете захотеть использовать некоторые инструменты, специфичные для XML (для обработки кодировок символов, для поддержания правильного формата XML и т. Д.). Вы можете использовать обычные линейно-ориентированные инструменты, но если вы не осторожно (или делая что-нибудь тривиальное) вы можете легко создать несовместимый XML.

Я использую набор командной строки XMLStarlet . Это набор утилит командной строки для анализа и обработки XML.

11
ответ дан 3 December 2019 в 17:20
поделиться

Большинство людей, вероятно, использовали бы sed для редактирования строк из сценария bash. если ты действительно заботится о синтаксическом анализе XML, а затем используйте что-то вроде Perl, у которого есть готовый синтаксический анализатор XML.

-4
ответ дан 3 December 2019 в 17:20
поделиться

Уродливо / небезопасно, но иногда проще всего вызвать sed / perl / awk из bash

-4
ответ дан 3 December 2019 в 17:20
поделиться

Using xmlstarlet:

xmlstarlet val -e file.xml
xmlstarlet ed -u "//settings/setting/@name" -v 'local directory2' file.xml
xmlstarlet ed -u "//settings[1]/setting/@name" -v 'local directory2' file.xml

# edit file inplace
xmlstarlet ed -L -u "//settings/setting/@name" -v 'local directory2' file.xml  
20
ответ дан 3 December 2019 в 17:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: