Notepad ++ ou outro aplicativo para substituir string por função numérica

1

Estou usando o Notepad ++ e tentando substituir todas as strings numéricas em uma tag específica (xxxx do meu documento XML com uma nova string que foi modificada por uma variável específica. Veja um exemplo:

<start>501234</start>

redondo (501234 * 0,9) = 451111

<start>451111</start>

Existe uma maneira de encontrar automaticamente todos os valores numéricos dentro da tag de início e substituí-los pelo mesmo valor multiplicado por 0,9? Eu não tenho que usar o Notepad ++ se houver outra ferramenta que possa fazer isso.

Obrigado!

    
por user38963 02.06.2010 / 20:53

3 respostas

1

use xslt para modificar um input.xml:

<bla>
     <start>501234</start>
     <end>12345</end>
</bla>

e você deseja multiplicar o número entre as tags start com 0.9 e criar um "arquivo de transformação" (transform.xsl):

<?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" indent="yes"/>

<!-- copy everything else -->
<xsl:template match="node()|@*">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>

<!-- transform what we are interested in -->
<xsl:template match="start">
    <foo><xsl:value-of select="number(.) * 0.9" /></foo>
</xsl:template>
</xsl:stylesheet>

e aplique-o assim:

% xsltproc transform.xsl input.xml
    
por 02.06.2010 / 21:35
0

Se você tem pouco conhecimento de programação, você pode escrever o seu próprio com muita facilidade. Você pode usar um objeto XPathNavigator para analisar o XML com combinação de C # ou VB para tarefas assim você não deve gastar mais de meia hora.

Comece seu próprio projeto com algumas das versões gratuitas do Visual Sudio e acesse Stackoverflow.com com seus problemas.

    
por 02.06.2010 / 22:30
0

Uma solução muito simples para isso é escrever um script (talvez perl) para encontrar e substituir sua variável. esta string combina tudo entre duas variáveis de tags] > (. ?). Em perl você pode apenas multiplicar o resultado dessa regex com 0,9 e reescrever a resposta. Eu lido com a atualização de arquivos xml grandes com frequência e o perl é de longe a solução mais fácil para qualquer um dos meus problemas

    
por 06.07.2010 / 00:59