xml - 从 bash 命令行解析多个命名空间 XML
问题描述
我正在尝试基于旧的 Mozilla 扩展格式解析 RDF 文件以获取版本,以便在 makefile 中使用,因此寻找xmllint
或类似的方法。.
<?xml version="1.0" encoding="UTF-8"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
<Description about="urn:mozilla:install-manifest"
em:id="some ID" em:version="1.0"
em:name="somename"
em:description="description"
em:creator="author"
em:iconURL="chrome://extension/skin/icon.png"
em:unpack="false" em:type="2" />
<em:targetApplication name="Pale Moon">
<Description
em:id="{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}"
em:minVersion="28.0.0a1"
em:maxVersion="29.*" />
</em:targetApplication>
</RDF>
如何提取 em: 嵌套在描述标签中的元素(主要是 id 和版本)?或者我不应该完全使用它并使用正则表达式 - 但在命令行上又如何?我在这里找到了对 xmllint 和 xmlstarlet 的引用,但无法弄清楚。
编辑,使用 xmlstarlet 尝试了以下命令行,但它没有输出任何内容。
xmlstarlet sel -N r=http://www.w3.org/1999/02/22-rdf-syntax-ns# -N em=http://www.mozilla.org/2004/em-rdf# -t -m "/r:RDF/r:Description/@em:version" install.rdf
解决方案
推荐阅读
- influxdb - 如何在电报中舍入输出值?
- java-8 - 如何从jdk 8中的另一个列表添加到列表
- flutter - 未处理的异常:在构造函数中调用 setState():....(生命周期状态:已创建,无小部件,未安装)在 Flutter 中
- c++ - Visual Studio C++ 本机单元测试链接器错误 LNK2001 链接器找不到测试类成员变量
- android - addTextChangedListener 立即触发
- dialogflow-cx - 在哪里可以找到 DialogFlow CX 代理 ID?
- reactjs - 在 React 中获取 Azure Devops 构建 ID
- javascript - 如何在 dojox 中使用 undo 功能?
- jenkins - Jenkins SSH 身份验证:手动信任与手动提供的密钥
- vmware - 通过 vmware 在 RHEL 8 上运行 KNI 示例程序时出现问题