/ / Entfernen Sie den XML-Knoten, einschließlich der untergeordneten Knoten, über den Texteditor - xml, notepad ++

Entfernen Sie den XML-Knoten, einschließlich der Kinder, falls vorhanden, über den Texteditor - xml, notepad ++

Ich möchte ein Tag / Node komplett entfernen (einschließlichIch habe in Notepad ++ (oder einem anderen FOSS-Texteditor), der möglicherweise / möglicherweise keine Kinder hat, und möglicherweise Enkelkinder usw. versucht, reguläre Ausdrücke (notiert auf einigen anderen SO-Fragen) zu verwenden, habe jedoch Probleme mit dem mehrzeiligen Aspekt von diese Knoten / Tags.

<exampleTag id="blah" name="bob">
<childTag possible="element" />
<moreChildren>
<evenAnotherLevel />
</moreChildren>
</exampleTag>

Es ist lustig, dass sowohl textWrangler als auch notepad ++ einen Knoten zum leichteren Lesen reduzieren können:

Bildbeschreibung hier eingeben

Das macht es einfach, das Ganze zu löschenmanuell, aber dies funktioniert nicht für eine Datei mit möglicherweise 10000s oder mehr dieser Tags. Gibt es ein Tool / Plugin, das dies tun kann? Im Moment breche ich node.js aus, um dies zu erledigen, aber das ist nicht " Eine Lösung für Laien.

Antworten:

0 für die Antwort № 1

Sie können die XSLT-Transformation direkt aus Notepad ++ verwenden. Sie müssen also bestimmte Knoten mit dem gesamten darin enthaltenen XML entfernen. Hier ist eine Vorlage, die Sie verwenden oder an Ihre Bedürfnisse anpassen können:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

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

<xsl:template match="exampleTag"/> <!-- The tags we want to remove are here -->
</xsl:stylesheet>

Speichern Sie diese nun als * .xslt-Datei auf der Festplatte. Öffnen Sie dann Ihr XML in Notepad ++ und gehen Sie zu Plugins -> XML-Tools -> XSL-Transformation. Geben Sie den Pfad zu Ihrer XSLT-Datei an:

Bildbeschreibung hier eingeben

Und klicken Sie auf Verwandeln.


0 für die Antwort № 2

Auf Texteditoren wie BBEdit, TextWrangler undBei anderen, die PCRE (Perl Compatible Regular Expressions) verwenden, können Sie die Option "Magic Dot" (ermöglicht die Übereinstimmung von r und n) festlegen, indem Sie sie vor Ihre Suche setzen (? s).

Wenn Sie nach dem schließenden XML-Tag suchen, stellen Sie sicher, dass Sie nicht gierige Suchanfragen verwenden, indem Sie? nach einem Muster wie. *, das sonst mit dem Endtag übereinstimmen könnte.

So können Sie beispielsweise in TextWrangler suchen

(?s)^    <exampleTag code="[0-9]*" name="[0-9]* - .*?</exampleTag>$.

und ersetzen Sie es durch nichts. Dies würde jeden <exampleTag, der 4 Leerzeichen nach einer neuen Zeile beginnt, mit einem numerischen Code und einem Namen finden, der eine Folge von Ziffern enthält - alles (nicht gierig) bis zum Ende </ exampleTag>, gefolgt von einer neuen Zeile. Die endgültige . am Ende versichert, dass die neue Zeile auch gelöscht wird. (Unter Windows benötigen Sie möglicherweise zwei Punkte für den cr-lf.)