从命令行修改XML

时间:2015-07-06 10:52:57

标签: xml powershell command-line windows-7 cmd

我有一个结构如下的xml文件,我想从命令行编辑这个文件。

<server>
<service>
<Connector port="8080" password="password1234"/>
</service>
</server>

我想更改密码或端口号。 cmd是否提供此选项,还是需要额外的工具?我知道powershell可以做到,但这对我来说不是最好的解决方案。 (除了我没有得到它与powershell运行:()。 搜索“password1234”并替换它也是可以的,因为我的文件中有一个默认密码,它始终是相同的,必须更换。

1 个答案:

答案 0 :(得分:2)

为了演示我使用的一个方法,首先在示例中创建xml文件:

为XML文件名定义变量

def find_nth(needle,haystack, n):
    start = haystack.find(needle)
    while start >= 0 and n > 1:
        start = haystack.find(needle, start+len(needle))
        n -= 1
    return start


for i in range(len(s1)) :
        occurrence= s1[:i+1].count(s1[i])    

        j=find_nth(s1[i], s2, occurrence)

定义要保存到文件的XML字符串

$xmlFile = "C:\temp\myconfig.xml"

将xml内容保存到文件

$xmlFromString = [xml]@"
<server>
<service>
<Connector port="8080" password="password1234"/>
</service>
</server>
"@

产生的文件内容

$xmlFromString.Save($xmlFile)
Get-Content -Path $xmlFile

以下是更改值的PowerShell代码 从文件中获取XML内容

<server>
  <service>
    <Connector port="8080" password="password1234" />
  </service>
</server>

查找元素/节点并更改属性值

$xml = [xml](Get-Content -Path $xmlFile)

保存XML内容

$node = $xml.selectSingleNode('//server/service/Connector')
$node.port = "9090"
$node.password = "MyNewPassord4321"

结果

$xml.Save($xmlFile)
Get-Content -Path $xmlFile

将命令保存到PowerShell ps1文件并通过PowerShell执行/运行。

我们需要有关您尝试完成的具体内容的其他详细信息,例如:

  • 运行脚本的用户/帐户有哪些权利?
  • 脚本将从何处运行?本地PC或服务器?
  • 一个或多个服务器/工作站?
  • 通过Windows Scheduler Task执行?

希望这很有帮助。 - 布鲁克斯