0

我正在尝试解析filelists.xml(RPM 的元数据)。

标签看起来像:

<package pkgid="b63972e0b2442412bd81bcb24065e264c02bc3fc" name="basesystem" arch="noarch"><version epoch="0" ver="10.0" rel="3_WR4.1.0.0" /></package>

我需要解析这种格式的数据:package.name-version.ver

例如,在上面的示例中,它将返回:basesystem-10.0

我想使用 Bash 或 C。

4

1 回答 1

1

每当您想在 bash 中从 XML 获取数据时,请考虑xmlstarlet

xmlstarlet sel -t -m '//package' -v '@name' -o '-' -v 'version/@ver'-o $'\n'

这匹配树中任意位置名为“package”的节点,并在名为“version”的子元素中写入“name”属性的值、破折号、“ver”属性的值,最后是换行符。

这比尝试将 XML 文件视为文本更简单、更安全,并且不会fileutil.xml因为恰好换行不同的完全有效文件而中断。

于 2013-10-08T23:24:00.487 回答