Im Beispiel-XML-Entwurf:
<unit name="Alpha">
<unit name="One">
█1
</unit>
<unit name="Two">
█2
</unit>
</unit>
Ich möchte irgendwie finden, wie man XPath enthält
unit@name="Alpha"/unit@name="One"
wenn sich das Caretzeichen an Position █1 befindetoder
unit@name="Alpha"/unit@name="Two"
wenn sich das Caretzeichen an Position █2 befindetdamit ich große XML-Dateien bearbeiten kann, ohne ihre Gliederung zu reduzieren und Namensattribute selbst zu lesen.
Idealerweise würde ich gerne einen Weg finden, einen solchen XPath in einem freien Texteditor in Windows zu erhalten.
Nach keiner Antwort habe ich ein einfaches Python-Skript entwickelt, das mit dem Python-Skript- Plugin im Notepad ++ - Editor verwendet werden soll. Es kann an eine Tastenkombination oder ein Symbol in der Symbolleiste* angehängt werden, um alle übergeordneten XML-Tags des Tags anzuzeigen, das sich an der Cursorposition befindet.
import re
matches = []
def match_found(m):
matches.append(m.group(0))
editor.research('<[A-Za-z0-9_]+[^/>]*>|</[A-Za-z0-9_]+>', match_found, 0, 0, editor.getCurrentPos())
path = []
for m in matches:
if m[:2] == "</":
path.pop()
elif m[-2:] != "/>":
path.append(m)
msg = ""
for m in path:
msg += m + "\n"
notepad.messageBox(msg, "Parents of current tag", 0)
*) Aufgrund eines aktuellen internen Problems des Plugins funktioniert das Skript nur, wenn es an das zweite oder höhere Symbolleistensymbol angehängt ist, das von diesem Plugin hinzugefügt wurde. Das erste Symbol hat Probleme, hängen Sie etwas daran an und klicken Sie nicht darauf. Effektiver ist es, einfach eine Tastenkombination über Settings > Shortcut Mapper > Plugin Commands zu binden .
Der CudaText- Editor (kostenlos) hat das Plugin CudaExt (in Plugins/AddonManager installieren), es gibt den Befehl "Code Tree: Show current path in statusbar".
Für die XML-Datei zeigt der Befehl den Pfad im XML-Baum an, wie auf dem Screenshot (gelber Balken unten). Einziger Hinweis: Der Cursor muss sich innerhalb von befinden <tag ... >
, nicht dahinter.
RProgramm
miroxlav
RProgramm
miroxlav
RProgramm