1 votos

Notepad ++ XML: eliminar etiquetas en función del contenido de la etiqueta secundaria

Soy bastante nuevo en el Bloc de notas++ y trata de usar Regex para la búsqueda de los valores específicos en un campo y eliminar sus Padres etiqueta (y todos los contenidos incluidos en el campo).

Básicamente estoy tratando de eliminar las transacciones que tienen ciertas Almacén ID. Los archivos son enormes y hay miles de entradas que necesita para deshacerse de, ejemplo de abajo!

La muestra

<Transaction>
                              <TxnHeader>
                                             <StoreId>6705</StoreId>
                                             <TillNumber>1</TillNumber>
                                             <TxnNumber>343243</TxnNumber>
                                             <StartDate>2019-02-02T07:42:45</StartDate>
                                             <TxnType>1</TxnType>
                              </TxnHeader>
                              <TxnItemLines>
                                             <TxnItemLine>
                                                            <DetailSequence>1</DetailSequence>
                                                            <ItemNumber>6304</ItemNumber>
                                                            <DeptNumber>168</DeptNumber>
                                                            <Quantity>1.000000</Quantity>
                                                            <LineValue>4.470000</LineValue>
                                             </TxnItemLine>
                              </TxnItemLines>
               </Transaction>
               <Transaction>
                              <TxnHeader>
                                             <StoreId>8351</StoreId>
                                             <TillNumber>1</TillNumber>
                                             <TxnNumber>327527</TxnNumber>
                                             <StartDate>2019-02-02T08:02:47</StartDate>
                                             <TxnType>1</TxnType>
                              </TxnHeader>
                              <TxnItemLines>
                                             <TxnItemLine>
                                                            <DetailSequence>1</DetailSequence>
                                                            <ItemNumber>6304</ItemNumber>
                                                            <DeptNumber>168</DeptNumber>
                                                            <Quantity>1.000000</Quantity>
                                                            <LineValue>7.310000</LineValue>
                                             </TxnItemLine>
                              </TxnItemLines>
               </Transaction>
               <Transaction>
                              <TxnHeader>
                                             <StoreId>7837</StoreId>
                                             <TillNumber>1</TillNumber>
                                             <TxnNumber>164728</TxnNumber>
                                             <StartDate>2019-02-02T08:19:47</StartDate>
                                             <TxnType>1</TxnType>
                              </TxnHeader>
                              <TxnItemLines>
                                             <TxnItemLine>
                                                            <DetailSequence>1</DetailSequence>
                                                            <ItemNumber>1902</ItemNumber>
                                                            <DeptNumber>154</DeptNumber>
                                                            <Quantity>1.000000</Quantity>
                                                            <LineValue>10.000000</LineValue>
                                             </TxnItemLine>
                              </TxnItemLines>
               </Transaction>

Deseado

<Transaction>
                              <TxnHeader>
                                             <StoreId>6705</StoreId>
                                             <TillNumber>1</TillNumber>
                                             <TxnNumber>343243</TxnNumber>
                                             <StartDate>2019-02-02T07:42:45</StartDate>
                                             <TxnType>1</TxnType>
                              </TxnHeader>
                              <TxnItemLines>
                                             <TxnItemLine>
                                                            <DetailSequence>1</DetailSequence>
                                                            <ItemNumber>6304</ItemNumber>
                                                            <DeptNumber>168</DeptNumber>
                                                            <Quantity>1.000000</Quantity>
                                                            <LineValue>4.470000</LineValue>
                                             </TxnItemLine>
                              </TxnItemLines>
               </Transaction>
               <Transaction>
                              <TxnHeader>
                                             <StoreId>7837</StoreId>
                                             <TillNumber>1</TillNumber>
                                             <TxnNumber>164728</TxnNumber>
                                             <StartDate>2019-02-02T08:19:47</StartDate>
                                             <TxnType>1</TxnType>
                              </TxnHeader>
                              <TxnItemLines>
                                             <TxnItemLine>
                                                            <DetailSequence>1</DetailSequence>
                                                            <ItemNumber>1902</ItemNumber>
                                                            <DeptNumber>154</DeptNumber>
                                                            <Quantity>1.000000</Quantity>
                                                            <LineValue>10.000000</LineValue>
                                             </TxnItemLine>
                              </TxnItemLines>
               </Transaction>

El texto deseado anteriormente, se ha de eliminar completamente la Transacción de la Etiqueta que contienen 8351

He intentado un Regex buscar y reemplazar (con nada) mediante la consulta:

<Transaction>.*?<StoreID>8351</StoreID>.*?</Transaction>

y terminó de envolver una enorme porción del documento desde la parte de arriba todo el camino hasta el final de la primera transacción que contiene 8351

Cualquier ayuda sería muy apreciada!

1voto

Toto Puntos 294
  • Ctrl+H
  • Qué buscar: <Transaction>(?:(?!</Transaction>).)+<StoreId>8351</StoreId>(?:(?!<Transaction>).)+</Transaction>\R
  • Reemplazar con: LEAVE EMPTY
  • de verificación Coincidir mayúsculas y minúsculas
  • compruebe Envoltura alrededor de
  • verificación de la expresión Regular
  • COMPRUEBE . matches newline
  • Reemplazar todos

Explicación:

<Transaction>               # opening tag
(?:(?!</Transaction>).)+    # tempered greedy token, make sure we haven't </Transaction> before the following
<StoreId>8351</StoreId>     # literally
(?:(?!<Transaction>).)+     # tempered greedy token, make sure we haven't <Transaction> before the following
</Transaction>              # literally, closing tag
\R?                         # optional any kind of linebreak

Captura de pantalla:

enter image description here

Más sobre Templado Codiciosos Token

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: