【发布时间】:2019-08-19 11:32:37
【问题描述】:
我有超过 1k 个 xml 文件,并且在循环中我想对 xml 文件做一些更改
原创
<annotation>
<folder>VOC2014_instance/person</folder>
<filename>set00_V000_69.jpg</filename>
<source> ... </source>
....
....
</annotation>
修改后的样子
<annotation>
<folder>VOC2014_instance/person</folder>
<filename>set00_V000_69.jpg</filename>
<path>/home/red/MyDataset/set00_V000_69.jpg</path>
<source> ... </source>
....
....
</annotation>
所以,我试着写这段代码
for file in $PWD/*.xml
do
sed -i 's/filename>/[\n] <path></path>/g' $file
done
我正在做的是找到 filename>,然后附加 new line with \n + 4 spaces + <path>/home/red/$filename</path> + newline
我知道我做得不对,但首先我不知道如何选择文件 b/w 的名称 然后在末尾添加一个新行空间
【问题讨论】:
-
因为 xml 文件不是基于行的文件,所以一般建议是使用 xml 库来进行这种编辑,而不是基于行的工具。
-
首先选择合适的工具。我建议使用 XML/HTML 解析器(例如 xmlstarlet)。 You can't parse [X]HTML with regex
-
这个怎么样? stackoverflow.com/questions/3095434/…python 中的 xml etree?
-
@Cyrus 在 python 中 xml etree 怎么样?