xml - 使用 perl 或 awk 从 xml 数据中删除 xml 声明

标签 xml perl awk xml-serialization xml-declaration

我们的应用程序位于接收端,对 XML 数据进行逆向分析。我们的应用程序没有可用的 Java 或 .NET,但在 Unix 中运行,因此它有 awk 和 Perl。

文件中的 XML 消息包含:

<?xml version="1.0" encoding="ISO-8859-1" ?> 

我在 Perl 和 awk 中尝试了一些选项来删除它们,但无法让它们工作:

perl -p -i -e "s/<?xml version="1.0" encoding="ISO-8859-1" ?>//g"  inputFile
perl -p -i -e "s/<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>//g"  inputFile
perl -p -i -e "s/<\?xml version="1.0" encoding="ISO-8859-1" \?>//g"  inputFile

还有其他选项可以使用 PERL 或 AWK 来执行此操作吗?

最佳答案

这对我有用,而无需覆盖数据文件:

perl -p -e 's/<\?xml version="1.0" encoding="ISO-8859-1" \?>//g'

只有当我确定基本正则表达式能够正常工作且不会造成损坏时,我才会覆盖该文件 (-i)。

关于xml - 使用 perl 或 awk 从 xml 数据中删除 xml 声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12802003/

相关文章:

java - XML 错误 "document is invalid.no grammar found"

android - XML-drawable 使用图层列表无法正常工作

perl - 如何在定义包时获取包中的符号?

regex - 选择奇数列,然后将连续行的字段放在一起

sql - 数据库设计问题,使用多个表或 XML

xml - 在 linux 中搜索 xml 文件

perl - 在 perl 中使用 split() 时如何实现我自己的转义序列?

arrays - Perl中 'one dimensional'散列对数组的优势

linux - 无法连接 bash 变量

linux - Awk - 返回以 pattern 开头的列中的第 n 个单词