python - 如何从外部有效 XML 标记中删除垃圾?

标签 python xml perl sed awk

我有一系列由数据播放实用程序生成的 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/

相关文章:

c# - 如何从 Web 服务中读取 XML 字符串的值

perl - 在 Perl 中,我如何处理多行

python - Pandas:条件聚合平均值和中位数

python - 从文件中读取小端并转换为十进制

xml - Clojure 数据 zip xml 组合

java - 如何减少 Android 按钮对象中文本周围的内部填充?

perl - 将旧的 Unix 日期转换为 Perl 并进行比较

multithreading - Perl 错误与 Log::Log4perl::Appender::File

python - Django 编辑子级中父级的字段

python - 使用 Python 脚本在 ADFS 上进行身份验证