【发布时间】:2020-02-05 06:51:17
【问题描述】:
我需要我的 XML 格式与 Powershell 默认保存它的方式略有不同。这是一个代码示例:
[xml]$XML = New-Object system.Xml.XmlDocument
$Declaration = $XML.CreateXmlDeclaration("1.0","UTF-8",$null)
$XML.AppendChild($Declaration) > $null
$Temp = $XML.CreateElement('Basket')
$Temp.InnerText = $test
$XML.AppendChild($Temp)
$Temp1 = $XML.CreateElement('Item')
$Temp1.InnerText = ''
$Temp.AppendChild($Temp1)
$XML.save('test.xml')
这会导致:
<?xml version="1.0" encoding="UTF-8"?>
<Basket>
<Item>
</Item>
</Basket>
我需要的 XML 应该如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<Basket>
<Item></Item>
</Basket>
这可能吗?
如果我添加XML.PreserveWhitespace = $true,所有内容都将在一行中结束。并且元素没有PreserveWhitespace 属性。
我找到的一个解决方案是添加一个空格$Temp1.InnerText = ' ',然后在第二步中清理代码。但我想知道是否有一种技巧可以让 Powershell 在一行上输出空元素。
不幸的是,我需要读取 XML 的目标应用程序将只接受上述要求的格式。
【问题讨论】:
-
我仍然需要探索
XDocument选项。他们目前给我一个错误。但是,此时脚本太大且太复杂,无法重写。现在我将在保存之前使用.Replace()。 -
感谢您的关注;理解重写;不过,答案中的 workaround 可能仍然对您有用,作为字符串替换的稍微简单的替代方法。
标签: xml powershell