2012-05-23 30 views
1

PowerShell/xml初学者在这里.... 我试图追加或删除使用PowerShell作为Nuget包的一部分的空xml节点。 XML文件的格式如下...使用PowerShell追加/删除空xml节点

<Root> 
    <service name="first"> 
     <item> 
     </item> 
    </service> 
    <service name ="second"> 
     <item> 
     </item> 
    </service> 
</Root> 

首先我的剧本选择的服务之一,并保存为一个变量,说,如果用户想要选择服务1 .....

if ($xml.Root.service.name -eq $serviceName) 
{ 
     $myService = $xml.Root.service 
} 

问题是后来,我需要附加的元素节点/删除节点... 我有类似

$newNode = $xml.CreateElement('new'... 
    ......... 

    $empty = $myService.SelectSingleNode('./item') 
    $empty.PrependChild($newNode) 

但我不能让这种方法工作。

任何建议,将不胜感激......

回答

4

这会帮助你的。

# Get an XML document 
$MyXml = [xml]'<?xml version="1.0" encoding="utf-8"?><root><service name="foo"><item></item></service></root>'; 
# Create a new element from the XmlDocument object 
$NewElement = $MyXml.CreateElement('new'); 
# Select the element that we're going to append to 
$ServiceElement = Select-Xml -Xml $MyXml -XPath '/root/service[@name="foo"]/item'; 
# Append the 'new' element to the 'item' element 
$ServiceElement.AppendChild($NewElement); 
# Echo the OuterXml property of the $MyXml variable to verify changes 
Write-Host -Object $MyXml.OuterXml; 
# Save the XML document 
$MyXml.Save('c:\test.xml'); 
+0

谢谢@Trevor。我现在发现了xPath方法不起作用的原因是由于xmlns命名空间()。你有任何想法如何解决? – JeffreyXu

+0

@RandomStranger您可能会发现这有帮助 - > http://stackoverflow.com/questions/8963328/how-do-i-use-powershell-to-add-remove-references-to-a-csproj –

+0

谢谢@AndyArismendi – JeffreyXu