Edit .XML file with Powershell, encoding

powershell, xml

Solution

"" is the Byte Order Mark for UTF-8. There is a solution for writing a UTF-8 file without the BOM here: Using PowerShell to write a file in UTF-8 without the BOM

Problem

I need to edit a .xml file with powershell. The thing I need to do is to download the .xml file from the server, updated the version number, and then save it in my local computer. This is what I did. ``` [xml]$myXML = get-content $xmlFileServer $myXML.'ivy-module'.info.revision = $newVersion $myXML.Save($newXMLFileName) ``` Then I will have a new xml file in my local computer. However, I doubt the coding is different since I can't process with this .xml file. The .xml I should get is something like this: ``` <?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> ``` However, after editing with powershell, the .xml contains some hidden info. I tried to open with NotePad++, I got something like this: ``` <?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> ``` Can anyone tell me why is the situation? Thank you so much.

Original source

Related problems