1

私は PowerShell で xml ドキュメント (.NET の System.Xml.XmlDocument クラス) を操作しています。XML 属性の間にカスタムの空白を追加したいと考えています。.NET で API 呼び出しを見つけることができず、オンラインでこれを実行しようとしている人は誰もいないようです。これは私がやろうとしていることの簡単な例ですが、何を呼ぶべきかわからないコメントが付いています:

$xmlDoc = [xml]@"
<root>
    <test Id="1" a="a" b="b" />
    <test Id="2" a="a" b="b" />
</root>
"@
$elements = @($xmlDoc.SelectNodes('//*'))
foreach($element in $elements)
{
    $attributes = $element.Attributes
    foreach($attribute in $attributes)
    {
        #
        # How do I access the whitespace around the attributes?
        #
    }
}

# Output to screen exactly what will be saved to disk
$tempFile = [System.IO.FileInfo]([System.IO.Path]::GetTempFileName())
$xmlDoc.save($tempFile)
foreach($line in (Get-Content $tempFile))
    { Write-Host $line }
Remove-Item $tempFile

System.Xml.XmlAttribute の周りの空白にアクセスする方法を知っている人はいますか?

4

1 に答える 1

3

残念ながら、 XmlDocument(および関連)またはXDocument (および関連)を使用してそれを行う方法はありません。XmlTextWriterのような低レベルのものでさえ、属性間に空白や新しい行を追加することはできません。

すべてのXmlNode/XObjectはシリアル化可能であるため、独自の特殊な形式のシリアル化を記述したり、標準のシリアル化プロセスの後に結果のXMLを後処理したりできます。お役に立てれば

于 2012-05-09T19:46:44.883 に答える