Ersetzen Sie das Attribut des übergeordneten XML-Knotens durch Werte aus dem untergeordneten Knoten

Ersetzen Sie das Attribut des übergeordneten XML-Knotens durch Werte aus dem untergeordneten Knoten

Ich habe eine XML-Datei, in der ich Text in einem übergeordneten Knoten durch Text aus dem untergeordneten Knoten ersetzen möchte. Dies ist eine Beispiel-XML:

<output name="Element_152">
  <field name="NAME" key="true">Unit001</field>
  <field name="ITEM">CommStatus</field>
</output>
<output name="Element_153">
  <field name="NAME" key="true">Unit001</field>
  <field name="ITEM">UnitStatus</field>
</output>

<output name="Element_...">Ich möchte den Wert des Attributs in den Wert von ändern <field name="ITEM">und erhalte daher Folgendes:

<output name="CommStatus">
  <field name="NAME" key="true">Unit001</field>
  <field name="ITEM">CommStatus</field>
</output>
<output name="UnitStatus">
  <field name="NAME" key="true">Unit001</field>
  <field name="ITEM">UnitStatus</field>
</output>

Danke

Antwort1

  • Ctrl+H
  • Finde was:(<output name=").+?(?=">(?:(?!</output>).)+<field name="ITEM">(.+?)</field>)
  • Ersetzen mit:$1$2
  • ÜBERPRÜFEN Groß-/Kleinschreibung beachten
  • ÜBERPRÜFEN Umwickeln
  • ÜBERPRÜFEN Regulären Ausdruck
  • ÜBERPRÜFEN . matches newline
  • Replace all

Erläuterung:

(<output name=")            # literally, group 1
.+?                         # 1 or more any character, not greedy
(?=                         # positive lookahead, make sure we have after:
    ">                          # literally
    (?:                         # non capture group, Tempered Greedy Token
        (?!</output>)               # negative lookahead, make sure we haven't <:output> after
        .                           # any character
    )+                          # end group, must appear 1 or more times
    <field name="ITEM">         # literally
    (.+?)                       # group 2, 1 or more any character, not greedy
    </field>                    # literally
)                           # end lookahead

Ersatz:

$1      # content of group 1 (<output name=")
$2      # content of group 2 (the value of ITEM)

Screenshot (vorher):

Bildbeschreibung hier eingeben

Screenshot (nachher):

Bildbeschreibung hier eingeben

verwandte Informationen