Назад | Перейти на главную страницу

обновить XML из командной строки [windows]

У меня есть несколько приложений, которые хранят свои файлы конфигурации в формате XML. Для обычного приложения, использующего текстовую конфигурацию, я мог бы достаточно легко обновить значение, используя perl, sed, awk или любой из миллиона инструментов. Я ищу что-то подобное для XML, что позволит мне легко и надежно выполнять такие операции, как обновление значения, добавление узла или его удаление.

Регулярный разбор текста может показаться слишком рискованным, поскольку у меня нет реальных гарантий относительно физического формата файла.

Анализ XML в MS Powershell проще, чем любой другой механизм синтаксического анализа, который я видел в любом другом языке или среде, с которыми я лично сталкивался.

Учитывая некоторый файл XML (test.xml):

<root>
  <one>I like applesauce</one>
  <two>You sure bet I do!</two>
</root>

Вы можете легко получить доступ, изменить и добавить узлы, значения и атрибуты XML-файла из Powershell.

# load XML file into local variable and cast as XML type.
$doc = [xml](Get-Content ./test.xml)

$doc.root.one                                   #echoes "I like applesauce"
$doc.root.one = "Who doesn't like applesauce?"  #replace inner text of <one> node

# create new node...
$newNode = $doc.CreateElement("three")
$newNode.set_InnerText("And don't you forget it!")

# ...and position it in the hierarchy
$doc.root.AppendChild($newNode)

# write results to disk
$doc.save("./testNew.xml")

Полученный XML в файле testNew.xml:

<root>
  <one>Who doesn't like applesauce?</one>
  <two>You sure bet I do!</two>
  <three>And don't you forget it!</three>
</root>

Невероятно просто! Наслаждаться.

Powershell - это новая оболочка Microsoft, которая поставляется с Windows Server 2008 и Windows 7 и бесплатно загружается для XP / Vista / Server 2003 (возможно, для других).

Полезные ссылки:
Генерация XML из других источников
Добавление элементов в XML:
Пример 1, блог MSDN PowerShell
Образец 2, PC-Pro (Великобритания)

Если я правильно понимаю вопрос, вы ищете другой формат хранения файла конфигурации, похожий на XML. Однако одной из сильных сторон XML является то, что он предоставляет структурированный формат данных. Если вы нарушаете DTD или «шаблон», у вас плохо сформированный файл конфигурации XML. В прошлом для некоторых из моих собственных усилий по разработке скриптов, программ и приложений я использовал файлы в формате INI. Хотя INI легко разбираются и могут поддерживать аналогичные операции добавления, удаления и обновления, я предпочитаю XML b / c:

  1. широко используемый
  2. Легко анализируется с помощью Perl XML :: LibXML
  3. Предлагает большую гибкость, чем файлы INI
  4. Лучшее решение для сохранения жестких форматов и структур из программ