问题描述
在使用 evtx_dump.py 将 .evtx 文件转换为 .xml 之后,我试图学习如何使用 XQuery 或任何帮助我使用 BaseX 数据挖掘文档的方法来查询它。
此时无论我尝试什么,我都只能使用 //Events
查询整个文档当我定义诸如 //Events/Event/System/[EventID = '4688'] 这样的路径时,我得到 0 个结果。
作为 BaseX 和 XQuery 的新手,我发现文档很难应用于这个用例。
我寻找工具来帮助我构建 XQuery 无济于事。
BaseX 启用了我能找到的所有索引功能。
兄弟,
乔里斯
解决方法
当 XQuery 无法返回您期望的数据时,通常是由于存在 XML 名称空间造成的。
Microsoft XML 事件日志在事件节点上使用 XML 命名空间,并由其子节点继承。这是您可以在文件中看到的 xmlns='http://schemas.microsoft.com/win/2004/08/events/event'
。例如
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Events><Event xmlns='http://schemas.microsoft.com/win/2004/08/events/event'>
<System><Provider Name='SideBySide'/><EventID Qualifiers='49409'>59</EventID><Version>0</Version>
...
您的 XQuery 必须为此进行调整。要么说任何命名空间都可以(使用 *:
)
//*:System/[*:EventID = '4688']
或者通过明确指定预期的命名空间。
declare namespace ns="http://schemas.microsoft.com/win/2004/08/events/event";
/Events/ns:Event/ns:System[ns:EventID= '4688' ]
看到这个类似的问题xquery-not-working-with-namespaces