我正在使用PowerShell编辑配置文件。我需要输出以下内容:“< FieldDelimiter>	< / FieldDelimiter>”。当然,它想要翻译制表符并写一个标签(空格)。我得到的最接近的是它输出:“< FieldDelimiter>& amp;#9;< / FieldDelimiter>”,这是不好的。如何让它写入&符号本身的文件?
我正在阅读文件:
[xml]$xml = (Get-Content $configFilePath)
...(skip some code)...
附加一些子元素:
$configuration = $xml.CreateElement("Configuration")
$newExtension = $xml.CreateElement("Extension")
$configuration.InnerXml = "
<DeviceInfo>
<FieldDelimiter>	</FieldDelimiter>
<UseFormattedValues>True</UseFormattedValues>
<NoHeader>True</NoHeader>
<FileExtension>txt</FileExtension>
</DeviceInfo>"
$newExtension.AppendChild($configuration)
...(more code skipped)...
$xml.Configuration.Extensions.Render.InsertAfter($newExtension, $csvNode)
然后保存文件。
$xml.Save($configFilePath)
答案 0 :(得分:0)
你可以逃避&号&
:
<FieldDelimiter>&#9;</FieldDelimiter>
作为测试,我创建了这个脚本:
$x = [xml]@"
<DeviceInfo>
<FieldDelimiter>&#9;</FieldDelimiter>
<UseFormattedValues>True</UseFormattedValues>
<NoHeader>True</NoHeader>
<FileExtension>txt</FileExtension>
</DeviceInfo>
"@
$x.Save("c:\temp\testEscape.xml")
然后我测试读取结果文件:
# C:\Temp> gc .\testEscape.xml
<DeviceInfo>
<FieldDelimiter>&#9;</FieldDelimiter>
<UseFormattedValues>True</UseFormattedValues>
<NoHeader>True</NoHeader>
<FileExtension>txt</FileExtension>
</DeviceInfo>
# C:\Temp> $x = [xml](gc .\testEscape.xml)
# C:\Temp> $x.DeviceInfo.FieldDelimiter
	
答案 1 :(得分:0)
更新:
我无法得到如何在没有编码的情况下简单地输出XML中的&符号的答案,而且我的项目时间已经不多了,所以这就是我所做的工作(不是首选答案,但它的确有效)。
我再次阅读该文件并更换了&#34;&amp; amp;&#34;用&#34;&amp;&#34;如下所示:
Branch.setUseTestBranchKey(true)