我需要使用powershell编辑.xml文件.我需要做的是从服务器下载.xml文件,更新版本号,然后将其保存在我的本地计算机中.这就是我做的.
[xml]$myXML = get-content $xmlFileServer
$myXML.'ivy-module'.info.revision = $newVersion
$myXML.Save($newXMLFileName)
Run Code Online (Sandbox Code Playgroud)
然后我将在我的本地计算机上有一个新的xml文件.但是,我怀疑编码是不同的,因为我无法使用此.xml文件进行处理.我应该得到的.xml是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd" xmlns:e="http://ant.apache.org/ivy/extra">
<info organisation="XXXX" module="XXXX" revision="2.0.1.0" status="release" publication="20131119202217" />
<publications>
<artifact name="XXXX" type="dll" ext="zip" conf="*" />
</publications>
</ivy-module>
Run Code Online (Sandbox Code Playgroud)
但是,使用powershell进行编辑后,.xml包含一些隐藏信息.我试着用NotePad ++打开,我得到这样的东西:
<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd" xmlns:e="http://ant.apache.org/ivy/extra">
<info organisation="XXXX" module="XXXX" revision="2.0.1.0" status="release" publication="20131119202217"/>
<publications>
<artifact name="XXXX" type="dll" ext="zip" conf="*"/>
</publications>
</ivy-module>
Run Code Online (Sandbox Code Playgroud)
谁能告诉我为什么会这样?非常感谢.
小智 6
这对我来说很有用,基于上面的链接和这篇博文
$enc = New-Object System.Text.UTF8Encoding( $false )
$wrt = New-Object System.XML.XMLTextWriter( 'c:\path\out.xml', $enc )
$wrt.Formatting = 'Indented'
$myXML.Save( $wrt )
$wrt.Close()
Run Code Online (Sandbox Code Playgroud)
'缩进'设置是个人品味; 我更喜欢我的XML人类可读.$ wrt.Close()也是必需的.
“\xc3\xaf\xc2\xbb\xc2\xbf”是UTF-8 的字节顺序标记。这里有一个编写不带 BOM 的 UTF-8 文件的解决方案:\n使用 PowerShell 以不带 BOM 的 UTF-8 格式编写文件
\n| 归档时间: |
|
| 查看次数: |
10100 次 |
| 最近记录: |