web-dev-qa-db-ja.com

文字列のXMLドキュメントを検索してフルXMLパスを取得する

ファイルに大きく複雑なXML文書があります。 XML文書のテキスト検索をして、見つかったテキストの完全なXMLパスを教えてください。

Windows用のRegEditツールには同様の機能があります。 「クロックレート」を検索すると、ウィンドウ下部のステータスバーにフルパスが表示されます。

Regedit

XMLファイルに同じことが欲しいのですが。たとえば、私が持っているならば

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

そして私は「テスト」を検索し、私はフルパスfoo\bar\bazを見るべきです

1
JoelFan

申し訳ありませんが、私はあらゆるアプリケーションに慣れていません(Firebugの間隔 - 私たちはちょっとそれに戻ります)それは箱から出してそれをします。それが本当に大きければ、あなたはカスタムソリューションをロールアウトする必要があるかもしれません - あなたが欲しいテキストを見つけるまでXML/HTMLパーサーを使用し、ノードを通過するには複雑ではありません。現在の要素のXPathを取得する機能。

上記のFirefoxプラグイン - Firebugについて。私はあなたに写真を見せるのに十分な評判がありません - しかしそれをするのは簡単なプロセスです:

  • firefoxでXMLファイルを開く - それはおそらく定義されていないので、おなじみが見えます:

    このXMLファイルは、それに関連付けられているスタイル情報を持つようには表示されません。文書ツリーを以下に示します。

  • f12を押すとFireBugを呼び出すと、ファイルがHTMLのようなボットをレンダリングされるようになります。すべての要素がinlineであるため、テキストはBLOBに「マージ」されます。それはインポートなしです - 重要な部分は、FirebugのHTMLタブのXMLファイルが解析されたことがわかります。

  • firebugの検索入力ボックスで見つけたいものを入力して、HTMLタブで焦点を当てます。
  • hTMLタブの必要な要素を右クリックし、上部には興味のある2つのオプションが表示されます。[。____]。
    • XPathをコピーする
    • CSSパスをコピーします

Firefoxネイティブ開発者ツールでこれを試すこともできます。

  • firefoxでXMLファイルを開き、F12を2回押してFirebugを呼び出して非表示にします - Tree View - Firebugの代わりにファイルが「正しく」ロードする方法を見つけていません。
  • 開発者ツールを開く(「開く」ボタンをクリックしてください - >開発者 - >トグルツール)
  • あなたの(不十分な)レンダリングされたXMLファイルをクリックして、それに焦点を合わせるためにCtrl + Fを検索するために、それは他の検索と同じように強調表示されるでしょう
  • インスペクタツール(ページからエレメントを選択する)をクリックして、強調表示されたテキストをクリックします。
  • [インスペクタ]タブで見つかった要素を右クリックし、[Unique Selectorのコピー]を選択します。これでXMLが検証しても、[私のFirefox]では、トップノードの代わりに「未定義」を返すことがあります。

テストファイルの場合

<?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パスコピー"

カタログブック#BK101ジャンル

  • Firefox開発者ツール "Copy Unique Selector"

#BK101>ジャンル:Nth-Child(3)

私の唯一の懸念は、あなたがあなたのファイルを書いたということです。それが本当に、本当に大きい場合 - まあ、あなたはブラウザが時々行動するのをどのように行動するかを知っています。 ;)

1
Xupicor