我有一系列从数据回放实用程序生成的XML文件。该实用程序生成格式正确的XML标记。不幸的是,这个工具并不完美。它试图序列化的一些Java对象失败了,它们只是简单地插入(作为二进制blob)在这些其他有效的XML标记之间。
例如。。。
<track>
<cto>Valid_XML_HERE</cto>@Binary_Blob_of_Junk@<cto>(...)</cto>
</track>
环境是RHEL-5,这意味着Python 2.4、Perl或SED/AWK解决方案是可用的。
对如何清除垃圾有什么建议吗?
最佳答案
我借鉴了Birei检查树元素的建议,但提出了一个SED唯一的解决方案。如OP所示,<cto>
标记恰好在一条连续的线上。然后,解决方案是分割这些行,使每个<cto>
标记都在一个新行上——因此,还可以隔离新行上的垃圾二进制数据——然后简单地选择以<cto>
标记开头的行。<tracks>
和</tracks>
标记可以通过CAT简单地添加到新文件中。
以下是SED命令,我已经测试并确认可以工作。。。
第一步。将<cto>
标记隔离到新行。
sed -i "s/<cto/\n<cto/g;s/<\/cto>/<\/cto>\n/g" ${FILE}
第二步。仅选择以
<cto>
标记开头的行。sed -i "/<cto/p" ${FILE}
第三步。格式化新的XML文档。
xmllint --format "${FILE}" > foo.xml
谢谢你们各自的意见。