我的文件中有一个大型且复杂的 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)
我唯一担心的是,你写的文件很大。如果它真的非常大 - 好吧,你知道浏览器有时会怎么做。;)