Как я могу найти переменную строку в файле XML с помощью VBS и заменить ее другой строкой

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

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

Я хотел бы сделать это в VBS (потому что это почти все, с чем я знаком в мире сценариев), но я рад рассмотреть возможность сделать это любым другим способом.

Я просмотрел функцию «Заменить», но мне еще предстоит найти способ поместить подстановочный знак в критерии поиска. Мне нужно иметь возможность искать:

<A>randomstuff</A>

и заменить на:

<A></A>

Для тех, кто может быть знаком с ситуацией, я сбрасываю пароль для Websense Enterprise Manager.

Файл XML имеет версию 1.0:

<?xml version="1.0" encoding="UTF-8"?>

Спасибо. Том


person Community    schedule 06.01.2009    source источник


Ответы (3)


Возможно, регулярное выражение?

Обычно я бы не рекомендовал их для анализа файлов xml/html, но если ваш xml очень специфичен, вы можете быть в порядке.

person Joel Coehoorn    schedule 06.01.2009

Никогда не используйте регулярные выражения для разбора XML. Они далеко не подходят для этой задачи. Решение, которое вам следует искать, заключается в том, как анализировать XML с помощью VBScript, что довольно просто.

Вот пример скрипта, который анализирует файл XML и заменяет текст в определенном элементе пароля.

Set xml = CreateObject("Msxml2.DOMDocument.6.0")
xml.Load "C:\doc.xml"
Set password = xml.SelectSingleNode("//root/element/password")
password.Text = "Hello, world"
xml.Save "C:\doc.xml"

Вот пример XML-файла, с которым будет работать скрипт.

<root>
    <element>
        <password>Example password</password>
    </element>
</root>

Важной частью скрипта является метод SelectSingleNode. При этом используется синтаксис XPath для поиска в XML-документе нужного нам элемента. Синтаксис XPath довольно прост, и в Интернете можно найти любое количество ссылок на него.

person Tmdean    schedule 07.01.2009

Или, если вы работаете на компьютере с Windows, это может быть еще быстрее и проще с помощью однострочной команды powershell.

(Get-Content doc.xml) -replace '<a>.*</a>','<a></a>' | Set-Content doc.xml

А затем вы научитесь работать с Powershell, чтобы добавить его в свое резюме!

person jeedo    schedule 23.11.2015