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

如何用xmlstarlet提取XML中caption元素的前两词及剩余内容?

使用xmlstarlet提取XML中元素的前两个词及剩余内容

需求与示例

给定XML文件内容:

<fig> 
    <caption>Figure 1: Testing the figure</caption> 
</fig> 

需要实现两个提取需求:

  1. 提取<caption>元素中的前两个词(示例中为Figure 1:)
  2. 提取该元素中的剩余内容(示例中为Testing the figure)

期望输出:

Figure 1:

Testing the figure

问题分析

你之前使用的xmlstarlet ed命令是用于编辑XML结构的,而需求是提取内容,应该使用xmlstarlet sel(选择提取)命令,同时原XPath的逻辑也存在问题。

解决方案

单命令实现期望输出

执行以下命令即可直接输出符合要求的结果:

xmlstarlet sel -t \
  -v "substring(//caption, 1, string-length(substring-before(substring-after(//caption, ' '), ' ')) + string-length(substring-before(//caption, ' ')) + 2)" \
  -n -n \
  -v "substring-after(substring-after(//caption, ' '), ' ')" \
  input.xml

命令拆解说明

  1. 提取前两个词:
    XPath逻辑:先通过substring-before(//caption, ' ')获取第一个词Figure,再通过substring-after(//caption, ' ')得到1: Testing the figure,接着用substring-before获取第二个词1:,最后计算总长度并截取开头到第二个词后的位置,得到Figure 1:。

  2. 提取剩余内容:
    通过两次substring-after跳过前两个词和中间的空格,直接获取剩余部分Testing the figure。

  3. 格式控制:
    -n参数用于添加换行符,实现空行分隔效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 20:52:21