Notepad ++ RegEx substitui o arquivo XML

0

Eu tenho procurado bastante aqui, mas não consigo encontrar uma solução para o meu problema e um noob quando uso o RegEx.

Estou tentando alterar um arquivo XML com tags semelhantes a esta:

<key>Date Modified</key><date>2014-09-09T16:18:44Z</date>
<key>Date Added</key><date>2014-09-09T18:06:23Z</date>

Para tags com esta aparência:

<key>Date Modified</key><date>2014-09-09T16:18:44Z</date>
<key>Date Added</key><date>2014-09-??T18:06:23Z</date>

Alterando basicamente o campo Data de adição para 2014-09- ?? para qualquer coisa que combine

<key>Date Modified</key><date>2014-09-09T16:18:44Z</date>

Mas o tempo "T16: 18: 44z" é sempre diferente. Apenas a data é a mesma (ou seja,)

<key>Date Modified</key><date>2014-09-09..........</date>
    
por m14 30.09.2014 / 03:14

1 resposta

0

Expressões regulares são a ferramenta errada para o trabalho. Veja esta famosa diatribe sobre o assunto: link

A ferramenta certa para o trabalho é a linguagem de transformação XML XSLT. O XSLT 2.0 pode usar expressões regulares para manipular o conteúdo de nós individuais, mas usa um analisador XML adequado para entender a marcação. Aqui está uma regra de transformação que você pode incluir no seu XSLT para esta tarefa:

<xsl:template match="date
                        [preceding-sibling::key[1]='Date Added']
                        [preceding-sibling::key[2]='Date Modified']
                        [starts-with(preceding-sibling::date[1],'2014-09-09')]">
  <date>
    <xsl:value-of select="concat(substring(.,1, 8), '??', substring(, 11))"/>
  </date>
</xsl:template> 

(O motivo pelo qual o padrão de correspondência é tão complexo é porque o XML é tão mal estruturado. Não há um elemento de wrapper que conecte uma chave e uma data, e nenhum que conecte os dois elementos principais).

    
por 30.09.2014 / 09:32