В черновике образца XML:
<unit name="Alpha">
<unit name="One">
█1
</unit>
<unit name="Two">
█2
</unit>
</unit>
Я хочу найти способ отображения XPath, содержащего
unit@name="Alpha"/unit@name="One"
когда курсор находится в позиции █1или
unit@name="Alpha"/unit@name="Two"
когда курсор находится в позиции █2так что я могу редактировать большие файлы XML, не сворачивая их структуру и не читая атрибуты имени самостоятельно.
В идеале хотелось бы найти способ получить такой XPath в каком-нибудь бесплатном текстовом редакторе в Windows.
После отсутствия ответа я разработал простой скрипт Python для использования с плагином Python Script в редакторе Notepad++ . Его можно прикрепить к сочетанию клавиш или значку на панели инструментов*, чтобы отобразить все родительские XML-теги тега, находящегося в позиции курсора.
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)
*) из-за текущей внутренней проблемы плагина скрипт работает только тогда, когда он прикреплен ко второму или более высокому значку панели инструментов, добавленному этим плагином. С первой иконкой проблемы, прикрепите к ней что-нибудь и не нажимайте. Более эффективный способ — просто привязать сочетание клавиш через «Настройки» > «Сопоставление ярлыков» > «Команды плагинов» .
Редактор CudaText (бесплатный) имеет плагин CudaExt (устанавливается в Plugins/AddonManager), он дает команду «Дерево кодов: Показать текущий путь в строке состояния».
Для файла XML команда показывает путь в дереве XML, как на снимке экрана (желтоватая полоса внизу). Только примечание: курсор должен быть внутри <tag ... >
, а не после него.
RПрограмма
мирослав
RПрограмма
мирослав
RПрограмма