1

У меня есть большой и сложный XML-документ в файле. Я хотел бы выполнить текстовый поиск по документу XML, чтобы он дал мне полный XML-путь найденного текста.

Схожая функциональность в инструменте RegEdit для Windows. Если я ищу "Частота тактирования", я вижу полный путь в строке состояния в нижней части окна.

Regedit

Я хотел бы то же самое для файлов XML. Например, если у меня есть

<foo><bar><baz>test</baz></bar></foo>

и я ищу "тест", я должен увидеть полный путь foo\bar\baz

1 ответ1

1

Извините, я не знаком ни с одним приложением (кроме Firebug - мы вернемся к этому через минуту), которое будет делать это из коробки. Если оно действительно большое - вам, возможно, придется развернуть собственное решение - не должно быть слишком сложно использовать какой-то синтаксический анализатор XML/HTML и проходить через узлы, пока вы не найдете нужный текст - в этот момент вы будете использовать некоторые встроенные функция для получения XPath текущего элемента.

О упомянутом плагине Firefox - Firebug. У меня недостаточно репутации, чтобы показать вам картинку - но это достаточно простой процесс, чтобы сделать это:

  • Откройте файл XML в Firefox - возможно, у него нет определенного стиля, поэтому вы увидите знакомое:

    Этот XML-файл не имеет никакой информации о стиле, связанной с ним. Дерево документа показано ниже.

  • нажмите F12, чтобы вызвать Firebug, вы должны увидеть, что файл теперь отображается как бот, как html - каждый элемент является встроенным и, таким образом, текст "сливается" с BLOB-объектом. Это не имеет значения - важная часть в том, что на вкладке HTML в Firebug вы можете увидеть, что ваш XML-файл проанализирован.

  • в поле ввода поиска Firebug введите то, что вы хотите найти, это будет сосредоточено на вкладке HTML.
  • щелкните правой кнопкой мыши нужный элемент на вкладке HTML, и вверху вы увидите два варианта, представляющих интерес:
    • Копировать XPath
    • Копировать путь CSS

Вы также можете попробовать это с помощью инструментов разработчика Firefox:

  • откройте файл XML в Firefox и дважды нажмите F12, чтобы вызвать и скрыть Firebug - я не нашел способа заставить файл загружаться "правильно" вместо представления в виде дерева - Firebug делает это.
  • откройте Инструменты разработчика (нажмите кнопку "Открыть меню" -> Разработчик -> Инструменты переключения)
  • нажмите на ваш (плохо) отрендеренный XML-файл, чтобы сосредоточиться на нем, Ctrl+F, чтобы найти фразу, она будет выделена, как и при любом другом поиске.
  • нажмите на инструмент инспектора ("Выбрать элемент со страницы") и нажмите на выделенный текст
  • щелкните правой кнопкой мыши на найденном элементе на вкладке "Инспектор" и выберите "Копировать уникальный селектор" - хотя в моем Firefox он иногда возвращает "неопределенный" вместо верхнего узла, даже если рассматриваемый XML действительно проверяет ...

Для тестового файла:

<?xml version="1.0"?>
<catalog>
   <book id="bk101">
      <author>Gambardella, Matthew</author>
      <title>XML Developer's Guide</title>
      <genre>Computer</genre>
      <price>44.95</price>
      <publish_date>2000-10-01</publish_date>
      <description>An in-depth look at creating applications 
      with XML.</description>
   </book>
</catalog>

Где наша искомая фраза "Компьютер", и, таким образом, искомый узел:

<genre>Computer</genre>

Результаты:

  • Firebug "Копировать XPath"

/ Каталог / книга / жанр

  • Firebug "Копировать CSS Path"

каталог книга № bk101 жанр

  • Инструменты разработчика Firefox "Копирование уникального селектора"

# bk101> жанр:nth-child(3)

Меня беспокоит только то, что вы написали, что у вас большой файл. Если он действительно очень большой - ну, вы знаете, как браузеры любят время от времени работать. ;)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .