Durchsuchen Sie das XML-Dokument nach Zeichenfolgen und rufen Sie den vollständigen XML-Pfad ab


1

Ich habe ein großes und komplexes XML-Dokument in einer Datei. Ich möchte eine Textsuche im XML-Dokument durchführen und mir den vollständigen XML-Pfad des gefundenen Texts anzeigen lassen.

Das RegEdit-Tool für Windows bietet ähnliche Funktionen. Wenn ich nach "Clock Rate" suche, kann ich den vollständigen Pfad in der Statusleiste unten im Fenster sehen.

Regedit

Ich möchte das gleiche für XML-Dateien. Zum Beispiel, wenn ich habe

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

und ich suche nach "test", sollte ich den vollen pfad sehen foo\bar\baz

Antworten:


1

Es tut mir leid, ich kenne keine Anwendung (außer Firebug - wir werden gleich darauf zurückkommen), die dies sofort erledigt. Wenn es wirklich groß ist - Sie müssen möglicherweise eine benutzerdefinierte Lösung einführen -, sollte es nicht zu kompliziert sein, einen XML / HTML-Parser zu verwenden und die Knoten zu durchsuchen, bis Sie den gewünschten Text gefunden haben - und an diesem Punkt würden Sie einen eingebauten Text verwenden Funktion, um XPath des aktuellen Elements zu erhalten.

Über das erwähnte Firefox-Plugin - Firebug. Ich habe nicht genug Ruf, um Ihnen ein Bild zu zeigen - aber es ist einfach genug, dies zu tun:

  • XML-Datei in Firefox öffnen - es ist wahrscheinlich kein Stil definiert, so dass Sie das Vertraute sehen werden:

    Dieser XML-Datei scheinen keine Stilinformationen zugeordnet zu sein   damit. Der Dokumentenbaum wird unten angezeigt.

  • Wenn Sie F12 drücken, um Firebug aufzurufen, sollten Sie sehen, dass die Datei jetzt wie ein HTML-Bot gerendert wird, wobei jedes Element inline ist und der Text somit zu einem Blob "zusammengeführt" wird. Das ist nicht wichtig - der wichtige Teil ist, dass Sie auf der HTML-Registerkarte des Firebugs sehen können, wie Ihre XML-Datei analysiert wird.

  • Geben Sie im Such-Eingabefeld von Firebug ein, wonach Sie suchen möchten. Auf der Registerkarte HTML wird darauf fokussiert.
  • Klicken Sie mit der rechten Maustaste auf das gewünschte Element in der Registerkarte HTML. Oben sollten zwei interessante Optionen angezeigt werden:
    • Kopieren Sie XPath
    • Kopieren Sie den CSS-Pfad

Sie können dies auch mit den nativen Firefox-Entwicklertools versuchen:

  • Öffnen Sie die XML-Datei in Firefox und drücken Sie zweimal die Taste F12, um Firebug aufzurufen und auszublenden. Ich habe keine Möglichkeit gefunden, die Datei "korrekt" zu laden.
  • Öffnen Sie die Entwicklertools (klicken Sie auf die Schaltfläche "Menü öffnen" - & gt; Entwickler - & gt; Tools umschalten)
  • Klicken Sie auf Ihre (schlecht) gerenderte XML-Datei, um sich darauf zu konzentrieren, und drücken Sie Strg + F, um eine Phrase zu suchen. Sie wird wie bei jeder anderen Suche hervorgehoben
  • Klicken Sie auf das Inspektor-Werkzeug ("Wählen Sie ein Element von der Seite aus") und klicken Sie auf den hervorgehobenen Text
  • Klicken Sie mit der rechten Maustaste auf das gefundene Element in der Registerkarte "Informationen" und wählen Sie "Eindeutige Auswahl kopieren". In meinem Firefox wird jedoch manchmal "undefiniert" anstelle des obersten Knotens zurückgegeben, obwohl das betreffende XML überprüft wird.

Für eine Testdatei:

<?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>

Wo unsere gesuchte Phrase "Computer" ist und somit der gesuchte Knoten ist:

<genre>Computer</genre>

Die Ergebnisse sind:

  • Firebug "XPath kopieren"

/ katalog / buch / genre

  • Firebug "CSS-Pfad kopieren"

katalog buch # bk101 genre

  • Firefox-Entwicklertools "Copy Unique Selector"

# bk101 & gt; Genre: n-tes Kind (3)

Meine einzige Sorge ist, dass Sie geschrieben haben, dass Ihre Datei groß ist. Wenn es wirklich sehr, sehr groß ist, wissen Sie, wie sich Browser von Zeit zu Zeit verhalten. ;)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.