我有一系列由数据播放实用程序生成的 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 命令...
第 1 步:隔离 <cto>
标签换行。
sed -i "s/<cto/\n<cto/g;s/<\/cto>/<\/cto>\n/g" ${FILE}
步骤 2. 仅选择以 <cto>
开头的行标签。
sed -i "/<cto/p" ${FILE}
步骤 3. 设置新 XML 文档的格式。
xmllint --format "${FILE}" > foo.xml
感谢您提出的所有意见。
关于python - 如何从外部有效 XML 标记中删除垃圾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13810318/