vim 如何插入包含从 xml 文件中提取的值的行

vim how to insert line with the values extracted from the xml file

我有一个 xml 文件,我希望在其中找到一些具有我想用来构建 url 值的特定标签。我愿意:

  1. 找到这些值
  2. 和他们一起url
  3. 在文件开头插入这个 url

例如,给定 xml 开头的文件:

<?xml version="1.0" encoding="utf-8"?>
<file_1_doc>
    <biul>1</biul>
    <poz>33792</poz>          
    <date_pub>2015-02-16</date_pub>

(...)

我想生成基本形式的 url:

http://foo.com/index.php?biul=show&position=[poz]&publdate=[date_pub]

上面的例子有:

http://foo.com/index.php?biul=show&position=33792&publdate=2015-02-16
  1. find these values

您需要一个 XML 解析器; Vim 无法正确执行此操作(除非 XML 始终保持一致的结构并且不使用像 XML 命名实体这样的特殊功能,您 可能 尝试使用正则表达式 (matchstr()) 进行解析,但请先阅读 this)。

Vim 可以嵌入各种脚本语言,例如Python (:help if_pyth.txt)。使用它们的默认库,XML 解析应该不是一个大问题。否则,您可以通过 system().

调用外部工具(例如 xmlstar
  1. make an url with them

一旦你在 Vim 变量中得到解析的 XML,这可以通过 printf().

轻松完成
  1. insert this url at the beginning of a file

同样,各种简单的方法。对于一个全新的行,:call append();添加到一行,:execute 'normal! a' . text 或较低级别的 call setline(, getline(1) . ...).