解码base64 XML会切断最后一部分

时间:2014-11-03 10:12:10

标签: java xml eclipse base64

我有一个base64编码的字符串,它代表一个XML Schema(xsd)。我使用Apache的Base64实用程序对此进行解码,将生成的字节数组放入intputsource,并让XMLSchemaCollection读取此inputSource:

String base64String = ......
byte[] decoded = Base64.decodeBase64(base64String);
InputSource inputSource = new InputSource(new ByteArrayInputStream(decoded));
xmlSchemaCollection.read(inputSource, new ValidationEventHandler());

这会出错:

XML document structure must start and end within the same entity

这通常意味着XML结构无效。我进行了两次测试,看看base64实际上是什么。首先是将它打印到控制台:

System.out.println(new String(decoded,"UTF-8"));

在eclipse中,我看到我的xml突然被切掉了,就像它的一部分缺失了一样。但是,如果我使用任何在线网站,例如https://www.base64decode.org/,我复制/粘贴我的base64,我会看到完整的完整xml。如果我验证此xml,验证成功。所以我有点困惑为什么eclipse在解码后似乎会切断我的xml?

1 个答案:

答案 0 :(得分:0)

这样的错误通常表示格式错误的文档:

     XML document structures must start and end within the same entity...

您可以采取一些措施进行调试:

1. Print out the XML document to a log and run it through some sort of XML validator.
2. Check to make sure that there are no invalid characters (ex UTF-16 characters in a UTF-8 document)