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

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

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

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

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

<A>randomstuff</A>

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

<A></A>

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

Файл XML выглядит как v1.0:

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

Спасибо. Том

Ответы [ 3 ]

1 голос
/ 07 января 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 довольно прост, и любое количество ссылок на него можно найти в Интернете.

1 голос
/ 06 января 2009

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

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

0 голосов
/ 23 ноября 2015

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

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

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

...