You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Notepad++中生成可粘贴到表格的结构化XPath查询结果?

问题说明

我有一份XML数据(示例用<Dog>/<Cat>/<Bird>代替真实的<Module>/<Module_Instance>节点),用以下XPath提取带Trick的feature相关信息:

//feature[contains(@name,'Trick')]/ancestor-or-self::*/@ID |//feature[contains(@name,'Trick')]/ancestor-or-self::*/@Breed |//feature[contains(@name,'Trick')]/ancestor-or-self::*/@name | //feature[contains(@name,'Trick')]/value/trick

但遇到两个问题:

  • Notepad++里查询结果没法以表格格式输出,没法直接粘贴到电子表格
  • 没法获取feature元素名,用来做电子表格C1单元格的表头
    目前在BaseX用XQuery有进展,但不会Notepad++里的XQuery用法,求解决办法。
解决方案

一、Notepad++用XQuery输出CSV格式(直接适配电子表格)

Notepad++的XML Tools插件支持XQuery,按以下步骤操作:

  1. 先安装XML Tools插件(插件管理器搜名字即可安装)
  2. 打开XML文件,点击菜单XML Tools > Run XQuery
  3. 粘贴以下XQuery代码并执行:
xquery version "3.0";

let $header := ("ID", "Breed", "ElementName", "FeatureName", "Trick")
return
  string-join(
    (
      string-join($header, ","),
      for $feature in //feature[contains(@name, 'Trick')]
      let $module := $feature/ancestor::*[local-name() = 'Module' or local-name() = 'Module_Instance']
      return
        string-join(
          (
            $module/@ID/string(),
            $module/@Breed/string(),
            local-name($feature),
            $feature/@name/string(),
            $feature/value/trick/string()
          ),
          ","
        )
    ),
    "&#10;"
  )
  1. 执行后会得到CSV格式的结果,直接复制粘贴到Excel或Google Sheets,自动识别为表格,其中ElementName列就是feature,刚好对应C1的需求。

二、代码逻辑说明

  • 先定义表头,包含所需的所有列:ID、Breed、元素名(即feature)、FeatureName、Trick
  • 遍历所有名字含Trick的feature节点,定位其上层的Module/Module_Instance节点
  • 将每个节点的对应字段用逗号拼接成一行,搭配表头用换行分隔,生成标准CSV格式

三、快速替代方案:XPath+文本替换

如果暂时不想用XQuery,也可以用现有XPath结果手动整理:

  1. 执行你的XPath查询,把结果复制到新文档
  2. 用Notepad++的正则替换合并行:
    • 查找框输入:^(.*)\r\n(.*)\r\n(.*)\r\n(.*)\r\n
    • 替换框输入:$1,$2,$3,$4\r\n
    • 手动添加表头行:ID,Breed,ElementName,Trick(把ElementName设为feature)

内容的提问来源于stack exchange,提问作者DBacker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 16:09:52