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 回答