【问题标题】:Appending to/Removing empty xml nodes using powershell使用powershell附加/删除空xml节点
【发布时间】:2012-05-24 06:24:48
【问题描述】:

PowerShell/xml 初学者在这里.... 我正在尝试使用 PowerShell 作为 Nuget 包的一部分附加或删除空 xml 节点。 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)

但我无法使用此方法。

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

【问题讨论】:

    标签: xml powershell nuget


    【解决方案1】:

    这应该可以帮助你。

    # 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');
    

    【讨论】:

    • 谢谢@Trevor。我现在发现 xPath 方法不起作用的原因是 xmlns 命名空间 ()。你知道如何解决这个问题吗?
    • @RandomStranger 你可能会觉得这很有帮助 --> stackoverflow.com/questions/8963328/…
    猜你喜欢
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多