Мне нужно отредактировать XML-файл с помощью powershell. Мне нужно сделать, это загрузить XML-файл с сервера, обновить номер версии и сохранить его на локальном компьютере. Это то, что я сделал.Редактировать .XML-файл с помощью Powershell, кодировка
[xml]$myXML = get-content $xmlFileServer
$myXML.'ivy-module'.info.revision = $newVersion
$myXML.Save($newXMLFileName)
Тогда у меня будет новый 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>
Однако после редактирования с помощью 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>
Может ли кто-нибудь сказать мне, почему это так? Большое вам спасибо.
Спасибо. Это работает. Мне нужно только добавить одну строку кодов. Спасибо. – Payson
Не могли бы вы расширить ответ, чтобы показать, как включить связанное решение с XML-файлом? '[System.IO.File] :: WriteAllLines ($ MyPath, $ myXML, $ Utf8NoBomEncoding)' просто выводит «System.Xml.XmlDocument». Я бы предпочел не писать один раз с помощью $ myXML.Save(), а затем перечитать его снова, чтобы сохранить без спецификации. – DannyMeister