12

私はPowerShellでこれをやろうとしています:

XDocument document = XDocument.Load(@"web.config");

var comments = document.Descendants("client").DescendantNodes().OfType<XComment>().ToArray();

foreach (var comment in comments)
{
    XElement unCommented = XElement.Parse(comment.Value);
    comment.ReplaceWith(unCommented);
}

私はこのようなことを試しました:

$xDoc = [System.Xml.Linq.XDocument]::Load("web.config")

[System.Collections.Generic.IEnumerable[System.Xml.Linq.XElement]] $enum = $xDoc.Descendants("client")
       
$clients = [System.Xml.Linq.Extensions]::DescendantNodes($enum)

しかし、私はエラーが発生しています

引数が 1 つの DescendantNodes の呼び出しで例外が発生しました: 値を null にすることはできません

4

2 に答える 2

27

PowerShellでlinqを使用して、これを機能させました(xmlドキュメントから何かをコメント解除します)。

[Reflection.Assembly]::LoadWithPartialName("System.Xml.Linq") | Out-Null

$xDoc = [System.Xml.Linq.XDocument]::Load("web.config")
$endpoints = $xDoc.Descendants("client") | foreach { $_.DescendantNodes()}               
$comments = $endpoints | Where-Object { $_.NodeType -eq [System.Xml.XmlNodeType]::Comment -and $_.Value -match "net.tcp://localhost:9876/RaceDayService" }        
$comments | foreach { $_.ReplaceWith([System.Xml.Linq.XElement]::Parse($_.Value)) }

$xDoc.Save("web.config")
于 2012-05-21T13:32:22.823 に答える
4

PowerShell Modulesを作成する場合は、呼び出し時に同様の依存関係が読み込まれるマニフェストファイルを作成します。Import-Module MyModule

# Comma-separated assemblies that must be loaded prior to importing this module
RequiredAssemblies = @("System.Xml.Linq")

これは、モジュールを作成する人に推奨される方法です。

于 2016-03-17T18:43:28.187 に答える