xml - 在 Bash 中的同一标记内删除 XML 选项卡和换行符
问题描述
我有如下 XML 数据,具有不同的名称和结束标记。
这种格式易于阅读,但在数据提取方面存在问题。
XML 源数据
<Device name="MotorA"
type="stepper"
factor="2"
profile="high"
SyncMode="false">
<Param name="Gain"
type="Baic"
PID="Standard"
valid="true"
version="1.2"/>
预期产出
<Device name="MotorA" type="stepper" factor="2" profile="high" SyncMode="false">
<Param name="Gain" type="Baic" PID="Standard" valid="true" version="1.2"/>
如何删除同一标签(一个标签,一行)中的制表符/换行符以在 Bash 脚本中提取数据?
环境是“Linux develop 3.13.0-24-generic #47-Ubuntu SMP Fri May 2 23:30:00 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux”
解决方案
你的节点的结束</Device>
标签在哪里?<Device [...]>
您的 XML 数据表明该<Param [...]>
节点实际上是子节点而不是兄弟节点。
我建议您使用 XML 解析器处理 XML,例如xidel。幸运xidel
的是,对未封闭的标签相当宽容:
$ xidel -s "input.xml" -e . --output-node-format=xml
<Device name="MotorA" type="stepper" factor="2" profile="high" SyncMode="false">
<Param name="Gain" type="Baic" PID="Standard" valid="true" version="1.2"/></Device>
注意到结束</Device>
标签了吗?
或适当缩进:
$ xidel -s "input.xml" -e . --output-node-format=xml --output-node-indent
<Device name="MotorA" type="stepper" factor="2" profile="high" SyncMode="false">
<Param name="Gain" type="Baic" PID="Standard" valid="true" version="1.2"/>
</Device>
推荐阅读
- android - Android,gradle更新后不能再导入外部依赖
- javascript - 设置和元素的不透明度,然后对其进行动画处理 - 全部使用 JS
- javascript - 无法从 php DB 获取数据到 javascript
- ms-word - 试图将一个 Word 文档的内容拖放到另一个
- ios - 在单击不同的 TableView 单元之前,TableView 单元不会加载视图控制器
- java - 嵌套方法调用
- python - 绘制图形 IP 与出现次数
- php - 带有 Homebrew 的 MacOS Sierra PHP 安装无法使用 homebrew php
- javascript - 如何在 HTML 中传递参数“this”
- angular - 为什么从角度传递反应形式值在服务器端(.net 核心 API)上获取 null?