从csv列引用Xml文件,然后将相应的列添加到xml文件中

时间:2017-11-15 13:48:52

标签: xml powershell

我的情况是有10 000个XML文件,然后是一个csv文件,其中包含每个xml文件的更多信息。我需要一个powershell脚本来引用csv文件中的文件名,并将其旁边的一个列中的信息添加到引用的XML文件中。

我不知道如何做到这一点。

1 个答案:

答案 0 :(得分:1)

我们可以在PowerShell中轻松加载XML文件。想象一下名为Data.xml的XML文件,如下所示:

<--.\Data.xml-->
<?xml version="1.0" encoding="utf-8"?>
<Data version="2.0">
  <Roles>
    <Role Name="ManagementServer" Value="NewManagementServer" />
    <Role Name="ADServer" Value="NewADServer" />
    <Role Name="ADServer" Value="NewADServer" />
  </Roles>
  <SQL>
    <Instance Server="NewSQLServer" Instance="MSSQLSERVER" Version="SQL Server 2012">
      <Variable Name="SQLAdmin" Value="Domain\NewSQlAdmin" />
      <Variable Name="SQLUser" Value="domain\sqluser" />
    </Instance>
  </SQL>
</AllContacts>
</Data>

我们可以使用这些命令在PowerShell中加载文件。

$file = (get-content .\data.xml) -as [XML]

然后我们可以将XML文件视为一个对象,甚至可以像这样选择节点:

#Display some particular sub-nodes
$file.Data.Roles.Role

Name             Value              
----             -----              
ManagementServer NewManagementServer
ADServer         NewADServer        
ADServer         NewADServer        

我们也可以添加节点!

#Create a new XML element
$newRole = $xml.CreateElement("Role")

#set the values
$newRole.SetAttribute("Name","MyNewElement")
$newRole.SetAttribute("Value","MyNewValue")

#add it to the collection
$file.Data.roles.AppendChild($newRole)

#save it
$file.Save('c:\temp.data.xml')

我还没有涉及如何从.csv文件中提取信息,但是一旦您提供其他信息我就可以更新。