0

タイプのXmlノードがあります

<compilation defaultLanguage="c#" debug="true" targetframework="4.0">     
    </compilation> 

powershell で属性 debug と targetframework を削除したい

<compilation defaultLanguage="c#">     
        </compilation> 

私はそうするために次のコードを使用しています

function Remove-Attribute([xml]$document,[string]$propertyName)
{
    try
    {   
        $ns = New-Object Xml.XmlNamespaceManager $document.NameTable
        $ns.AddNamespace("ns","WDA.Application.Configuration")
        $configurationInfo = Get-ConfigurationInfo $propertyName

        $node = $document.selectSingleNode($ConfigurationInfo.XPath,$ns)
        If($node -eq $null)
        {
             throw "ERROR: The '" + $propertyName + "' setting was not found using XPath: " + $configurationInfo.XPath
         }
        else
         {    
        $node.Attributes("debug").Remove()
            $node.Attributes("targetframework").Remove()

        $document.Save()
        }
    }
    catch [Exception]
    {
    }
}

しかし、ノードを削除できません。助けてください:)

4

2 に答える 2

1

を使ってみてくださいRemoveAttribute()。次に例を示します。

$xml = @'
<xml>
<compilation defaultLanguage="c#" debug="true" targetframework="4.0"></compilation>
</xml>
'@ -as [xml]

$node = $xml.selectSingleNode('//compilation')
$node.RemoveAttribute('debug')
$node.RemoveAttribute('targetframework')

$xml.OuterXml
于 2013-05-29T13:13:13.117 に答える
0

これはうまくいきます:

$xml.root.compilation

defaultLanguage                   debug                            targetframework
---------------                   -----                            ---------------
c#                                true                             4.0

$xml.root.compilation.RemoveAttribute("debug")
$xml.root.compilation.RemoveAttribute("targetframework")

$xml.root.compilation

defaultLanguage
---------------
c# 
于 2013-05-29T13:16:21.313 に答える