2010-09-02 117 views
0

为了解析无效的XML文件,具有或者未编码,非法字符(在我的情况&符号):桑达/ awk脚本以纠正XML(符号)非法字符

<url>http://example.com?param1=bad&param2=ampersand</url> 

和编码的人

<description> The good, the bad &amp; the ugly </description> 

请发布一个可以编码非法字符的sed/awk脚本示例。

+3

为什么XML生成器首先生成无效的XML? – 2010-09-02 11:18:44

+0

它不是由我生成的,我只解析了返回无效XML的外部服务。由于XML非常大(几十MB),我可以将它保存在磁盘上并进行准备。 – 2010-09-02 12:14:11

回答

2
tidy -m -xml <your-xml-file> 
+0

什么包提供'tidy'? – 2017-08-03 18:59:57

+1

@AlexejMagura http://www.html-tidy.org/ – Tomalak 2017-08-03 20:39:27

0

完全未经测试,但您可以通过将所有有效的转换回其原始形式作弊,然后再次进行转换。

例如,如果你只需要担心&符号,你可以做类似的东西:

sed 's/&amp;/&/g' | sed 's/&/&amp;/g'

当然,你可以做到这一点有很多清洁和他们的将是更好的解决方案,但有些休息正在呼唤我,我相信你可以从这里解决问题。

+3

这可能不会完成你的想法。在sed手册页中:“替换[s ///命令] 中出现的&符号(&)将被替换为与RE匹配的字符串。在此上下文中,&的特殊含义可以通过前面的通过反斜杠。“ - 所以'/ & /&/ g'实际上什么都不会改变。你的意思是'/ &/\&/ g'? – 2010-09-02 16:59:42