Búsqueda y reemplazo de npp XML

Búsqueda y reemplazo de npp XML

Tenga en cuenta que soy nuevo en xml y npp.

Tengo un archivo xml grande con varios miles de registros y necesito cambiar líneas para que funcione en otro programa.

He realizado la mayor parte de la transformación en formato, pero ahora tengo un problema.

Cómo se ve mi xml ahora:

</Value>
<name>C01</name>
<description>TEXT WITH VARYING NUBMER OF CHARACTERS FOR EACH LINE</Value>
</DPR>

y lo que quiero:

<DPR>
<name>C01</name>
<description>TEXT WITH VARYING NUBMER OF CHARACTERS FOR EACH LINE</description>
</DPR>

El problema es sustituir </Value>con dos cosas diferentes dependiendo de si está en una serie de stands solos. El segundo problema que tengo es reemplazar partes de una línea y conservar el resto, cuando la parte que quiero conservar tiene una cantidad diferente de caracteres para cada línea.

¡Toda ayuda es muy apreciada!

Respuesta1

Reemplazando </Valuecon </DPR>cuando existe solo en la línea:

Encontrar que:^ *</Value>

Reemplazar con:</DPR>

Modo de búsqueda: expresión regular

Después de eso, no debería haber otras instancias que </Value>no sean las que están junto con una cadena, por lo que reemplazarlas debería ser trivial. Pero para completar...

Reemplazando [somestringhere]</Value-> [somestringhere]</description>cuando existe solo en la línea:

Encontrar que:^(<description>.+?)</Value>

Reemplazar con:$1</description>

Modo de búsqueda: expresión regular

En lo anterior ^significa el inicio de la línea, *significa que los espacios en blanco pueden existir o no, .+?significa cualquier carácter hasta la primera aparición de la cadena después de eso (consulte aquí para obtener más información sobre expresiones regulares), y $1en la cadena de reemplazo se sustituirá con la parte coincidente entre paréntesis en los datos de origen.

Respuesta2

La más sencilla es utilizar expresiones regulares en Perl:

perl -i -p -e 's/</Value>\n<name>/<DPR>\n<name>/' yourfile.txt

información relacionada