如何使用VBS在XML文件中搜索变量字符串,并将其替换为另一个字符串

时间:2009-01-06 17:28:29

标签: xml vbscript replace find

我有一个包含加密密码的配置XML文件。我们有时需要重置此密码,这样做的方法包括从XML文件中删除实际上是密码的字符串并保存文件。

该过程还涉及停止并重新启动我可以管理的几项服务,但我还没有找到一种搜索和替换字符串的方法,因为它每次都可能不同。

我想在VBS中这样做(因为这几乎是我在脚本世界中熟悉的所有内容)但我很乐意考虑以其他方式做到这一点。

我查看了Replace函数,但我还没有找到一种将通配符放入搜索条件的方法。我需要能够搜索:

<A>randomstuff</A>

并替换为:

<A></A>

对于那些可能熟悉情况的人,我正在重置Websense企业管理器的密码。

XML文件似乎是v1.0:

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

感谢。 汤姆

3 个答案:

答案 0 :(得分:1)

也许是regular expression

我通常不建议使用它们来解析xml / html文件,但如果你的xml非常具体,你可能没问题。

答案 1 :(得分:1)

永远不要使用正则表达式来解析XML。它们远非适合这项任务。您应该寻找的解决方案是如何使用VBScript解析XML,这非常简单。

这是一个示例脚本,它将解析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语法非常简单,可以在线找到任意数量的引用。

答案 2 :(得分:0)

或者如果你在Windows机器上使用单行PowerShell命令可能更快更容易

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

然后你将学习Powershell,以便添加到你的简历中!