如何在XML属性之间添加自定义空格(.NET,Powershell)

时间:2012-05-09 18:55:40

标签: .net powershell

我在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周围的空白?

1 个答案:

答案 0 :(得分:3)

不幸的是,使用XmlDocument(及相关)或XDocument(以及相关)无法做到这一点。即使像XmlTextWriter这样的低级别内容也不允许您在属性之间添加额外的空格或新行。

每个XmlNode / XObject都可序列化,因此您可以在标准序列化过程之后编写自己的特殊格式化序列化或后处理生成的XML。希望这有帮助