XML Starlet 删除自定义 XMl 节点
XML Starlet Delete custom XMl Node
基本上,我的 XML 中有多个 <video_preprocessors>
和 </video_preprocessors>
。我想删除第一个</video_preprocessors>
节点和第二个<video_preprocessors>
节点如何实现?
</video_preprocessors>
<video_preprocessors>
<timecode_burnin>
<font_size>16</font_size>
<position>top_center</position>
<prefix/>
</timecode_burnin>
它位于 <timecode_burnin>
之前
这是完整的xml。
我想删除</video_preprocessors> <video_preprocessors>
之前的<timecode_burnin>
非常感谢。
正在分析您的预期 output/result 我得出的结论是它需要 2 个操作:
1) 将timecode_burnin
节点移动到上一个兄弟节点video_preprocessors
2)删除最初包含timecode_burnin
节点的"old"video_preprocessors
节点
xmlstarlet ed -m "//video_preprocessors/timecode_burnin" \
"//video_preprocessors/timecode_burnin/../preceding-sibling::video_preprocessors" \
-d "//video_preprocessors[timecode_burnin]/following-sibling::video_preprocessors" test.xml
以上命令会输出预期的结果。
处理后的关键片段:
...
<codec>h.264</codec>
<video_preprocessors>
<deinterlacer>
<algorithm>interpolate</algorithm>
<deinterlace_mode>Deinterlace</deinterlace_mode>
<force>false</force>
</deinterlacer>
<timecode_burnin>
<font_size>16</font_size>
<position>top_center</position>
<prefix/>
</timecode_burnin>
</video_preprocessors>
</video_description>
...
修改文件inplace - 添加全局-L
选项:
xmlstarlet ed -L -m ...
基本上,我的 XML 中有多个 <video_preprocessors>
和 </video_preprocessors>
。我想删除第一个</video_preprocessors>
节点和第二个<video_preprocessors>
节点如何实现?
</video_preprocessors>
<video_preprocessors>
<timecode_burnin>
<font_size>16</font_size>
<position>top_center</position>
<prefix/>
</timecode_burnin>
它位于 <timecode_burnin>
这是完整的xml。
我想删除</video_preprocessors> <video_preprocessors>
之前的<timecode_burnin>
非常感谢。
正在分析您的预期 output/result 我得出的结论是它需要 2 个操作:
1) 将timecode_burnin
节点移动到上一个兄弟节点video_preprocessors
2)删除最初包含timecode_burnin
节点的"old"video_preprocessors
节点
xmlstarlet ed -m "//video_preprocessors/timecode_burnin" \
"//video_preprocessors/timecode_burnin/../preceding-sibling::video_preprocessors" \
-d "//video_preprocessors[timecode_burnin]/following-sibling::video_preprocessors" test.xml
以上命令会输出预期的结果。
处理后的关键片段:
...
<codec>h.264</codec>
<video_preprocessors>
<deinterlacer>
<algorithm>interpolate</algorithm>
<deinterlace_mode>Deinterlace</deinterlace_mode>
<force>false</force>
</deinterlacer>
<timecode_burnin>
<font_size>16</font_size>
<position>top_center</position>
<prefix/>
</timecode_burnin>
</video_preprocessors>
</video_description>
...
修改文件inplace - 添加全局-L
选项:
xmlstarlet ed -L -m ...