在 XML 文档中搜索字符串并获取完整的 XML 路径

在 XML 文档中搜索字符串并获取完整的 XML 路径

我的文件中有一个大型且复杂的 XML 文档。我想对 XML 文档进行文本搜索,并让它为我提供找到的文本的完整 XML 路径。

Windows 的 RegEdit 工具中有类似的功能。如果我搜索“时钟频率”,我可以在窗口底部的状态栏中看到完整路径。

注册表编辑器

我希望 XML 文件也能有同样的效果。例如,如果我有

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

然后我搜索“测试”,应该会看到完整路径foo\bar\baz

答案1

抱歉,我不知道有哪个应用程序(除了 Firebug - 我们稍后会讨论它)可以立即实现这一点。如果它真的很大 - 您可能必须推出自定义解决方案 - 使用一些 XML/HTML 解析器并遍历节点直到找到所需的文本应该不会太复杂 - 此时您将使用一些内置函数来获取当前元素的 XPath。

关于提到的 Firefox 插件 - Firebug。我没有足够的信誉来向您展示图片 - 但执行此操作的过程足够简单:

  • 在 Firefox 中打开 XML 文件 - 它可能没有定义样式,因此您会看到熟悉的:

    此 XML 文件似乎没有任何与之关联的样式信息。文档树如下所示。

  • 按 F12 调用 Firebug,您应该会看到文件现在呈现为类似 html 的 bot - 每个元素都是内联的,因此文本被“合并”为 blob。这没什么大不了的 - 重要的是,在 Firebug 的 HTML 选项卡中,您可以看到已解析的 XML 文件。

  • 在 Firebug 的搜索输入框中输入您想要查找的内容,它将在 HTML 选项卡中被聚焦。
  • 在 HTML 选项卡中右键单击所需元素,您应该在顶部看到两个感兴趣的选项:
    • 复制 XPath
    • 复制 CSS 路径

你也可以尝试使用 Firefox 原生开发者工具:

  • 在 Firefox 中打开 XML 文件并按两次 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>

我们搜索的短语是“Computer”,因此我们想要的节点是:

<genre>Computer</genre>

结果是:

  • Firebug“复制 XPath”

/目录/书籍/类型

  • Firebug“复制 CSS 路径”

目录书号#bk101 类型

  • Firefox 开发人员工具“复制唯一选择器”

#bk101 > 类型:nth-child(3)

我唯一担心的是,你写的文件很大。如果它真的非常大 - 好吧,你知道浏览器有时会怎么做。;)

相关内容