[英]Replacting XML node text using PowerShell
我的XML文档如下
<Batch>
<Alter>
<ObjectDefinition>
<DataSources>
<DataSource>
<ConnectionString>Provider=SQLNCLI11.1;Data Source=ABC;Integrated Security=SSPI;Initial Catalog =TesDB1</ConnectionString>
<ConnectionString>Provider=SQLNCLI11.1;Data Source=XYZ;Integrated Security=SSPI;Initial Catalog =TesDB1</ConnectionString>
</DataSource>
</DataSources>
</ObjectDefinition>
</Alter>
</Batch>
我想替换整个连接字符串节点,如下所示
$ConnectionString = "Provider=SQLNCLI11.1;Data Source=$DataSource;Integrated Security=SSPI;Initial Catalog =$Database"
这是我尝试过的方法,但这仅替换了一个节点内容
$XMLA = "D:\employee.xml"
$SqlDataBase = [xml](Get-Content $XMLA)
$data = $SqlDataBase.SelectNodes("Batch/Alter/ObjectDefinition/DataSources/DataSource/ConnectionString")
#$data
$DataSource = "localhost"
foreach($xn in $data)
{
$DataBase = $xn.'#text'.Split(";").Split("=")
$DataBase[$DataBase.Length - 1]
$DataBase = $DataBase[$DataBase.Length - 1]
$ConnectionString = "Provider=SQLNCLI11.1;Data Source=$DataSource;Integrated Security=SSPI;Initial Catalog =$Database"
$SqlDataBase.SelectSingleNode("Batch/Alter/ObjectDefinition/DataSources/DataSource/ConnectionString").InnerText = "$ConnectionString";
}
$SqlDataBase.Save($XMLA)
因此,如果有更好的方法来替换多个节点,请告诉我
这是我从此处获取源代码的最佳方法
$XMLA = "D:\employee.xml"
$SqlDataBase = [xml](Get-Content $XMLA)
$data = $SqlDataBase.SelectNodes("Batch/Alter/ObjectDefinition/DataSources/DataSource/ConnectionString")
#$data
$DataSource = "localhost"
$SqlDataBase.Batch.Alter.ObjectDefinition.DataSources.DataSource.ChildNodes | Where-Object Name -Match 'ConnectionString' | ForEach-Object {
$DataBase = $_.'#text'.Split(";").Split("=")
$DataBase = $DataBase[$DataBase.Length - 1]
$ConnectionString = "Provider=SQLNCLI11.1;Data Source=$DataSource;Integrated Security=SSPI;Initial Catalog =$Database"
$_.'#text' = "$ConnectionString"
}
$SqlDataBase.Save($XMLA)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.