我正在尝试使用xsltproc从xml文件中获取数据但是当我执行xsltproc时,我得到一个解析器错误列表,显示我:
new_news.xml:388407:解析器错误:PCDATA无效Char值26
new_news.xml:418521:解析器错误:PCDATA无效字符值26
new_news.xml:1490882:解析器错误:PCDATA无效字符值27 ultan'ın
错误列表中的数字显示我的xml文件的行号,其中发生错误,我看到有一些非UTF8字符,如ESC,SUB等。(。xml文件具有UTF-8标记在开头。)因为在这种情况下,我需要删除(或替换)那些非UTF8字符。要做到这一点:
我使用了iconv命令:
iconv -c -t UTF-8< new.xml> new_news.xml
然后使用diff命令查看差异:
diff new.xml new_news.xml
但他们之间没有区别。因此,在给xsltproc命令提供new_news.xml的情况下,我得到相同的错误。
你能帮我解决一下吗?我究竟做错了什么? 顺便说一句,我正在使用OsX终端。我不知道iconv命令是否与sed和awk命令有所区别。
最好的问候
答案 0 :(得分:1)
你的问题不是UTF-8,而是XML。非打印字符(如ESC或SUB)为not allowed in XML。如果您的文件包含它们,那么它不是XML文档。
在将文档解析为XML并由XSLT处理器处理之前,您需要删除有问题的字符或将其更改为其他字符。更改文档的编码将无法完成任何操作。