atualiza XML a partir da linha de comando [windows]

5

Eu tenho alguns aplicativos que armazenam seus arquivos de configuração no formato XML. Para um aplicativo regular, usando uma configuração baseada em texto, eu poderia atualizar um valor com bastante facilidade usando perl, ou sed, ou awk, ou qualquer um de um milhão de ferramentas. Estou à procura de algo semelhante para XML, o que me permitirá realizar operações de forma fácil e confiável, como: atualizar um valor, adicionar um nó ou remover um.

A análise de texto regular parece ser muito arriscada, pois não tenho garantias reais sobre o formato físico do arquivo.

    
por Mikeage 17.06.2009 / 04:25

2 respostas

9

A análise de XML no MS Powershell é mais fácil do que qualquer mecanismo de análise que já vi em qualquer outro idioma ou ambiente que eu tenha encontrado pessoalmente.

Dado algum arquivo XML (test.xml):

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

Você pode acessar, modificar e anexar facilmente nós, valores e atributos do arquivo XML de dentro do 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 resultante no arquivo 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>

Incrivelmente fácil! Aproveite.

O Powershell é o novo shell da Microsoft que vem com o Windows Server 2008 e o Windows 7 e é um download gratuito para o XP / Vista / Server 2003 (talvez outros).

Alguns links úteis: Gerando XML de outras fontes
Adicionando elementos ao XML:
Exemplo 1, blogue do MSDN PowerShell Exemplo 2, PC-Pro (Reino Unido)

    
por 17.06.2009 / 05:34
0

Se eu entendi a pergunta corretamente, você está procurando um formato de armazenamento de arquivo de configuração diferente que seja semelhante ao XML. Um dos melhores pontos strongs do XML é o fato de fornecer um formato de dados estruturado. Se você violar o DTD ou "template", você terá um arquivo de configuração XML mal formado. No passado, para alguns dos meus próprios esforços de desenvolvimento, scripts, programas e aplicativos, eu havia usado arquivos formatados pelo INI. Enquanto o INI é facilmente analisado, e pode suportar adicionar, excluir, atualizações, eu prefiro XML b / c é:

  1. amplamente utilizado
  2. Analisado facilmente com o XML :: LibXML do Perl
  3. Oferece maior flexibilidade que arquivos INI
  4. Melhor solução para persistir em formatos e estruturas rígidos de programas
por 17.06.2009 / 05:36