我想如下解析使用的DocumentBuilderFactory的XML文件:
DocumentBuilderFactory ndsParserFactory = DocumentBuilderFactory.newInstance( );
ndsParserFactory.setNamespaceAware( true );
DocumentBuilder ndsParser = ndsParserFactory.newDocumentBuilder( );
Document ndsDocument = ndsParser.parse( ndsFileInputStream );
其中ndsFileInputStream是一个InputStream包裹包含XML文件。
我得到一个异常时,该文件包含Unicode字符,例如Δ。 当我带出含有违规的字符线,解析工作得很好。
该文件包含特性<?xml version="1.0" encoding="utf-8"?>
头。
我想知道如果我忽略了以处理Δ字符正确配置的DocumentBuilderFactory(或的DocumentBuilder)实例。
(从评论) 编辑 :
全面披露:这是Android的,而我,包括XML文件(使用NDS文件扩展名)在我的Android应用程序的资产。 我通过AssetManager,这对打开资产文件转换成一个InputStream,然后我传递给我的DocumentBuilder的解析方法的方便,花花公子方法访问它们。 - d焊缝17小时以前
我注意到,资产文件夹在默认情况下其内容使用CP1252的编码。 所以我改变了对UTF8。 没运气。 然后,我从(每条链路)的NDS文件中的一个取出的BOM和再次尝试。 没运气。 我在想,apk文件(被压缩就像一个ZIP文件)以某种方式重整非ASCII XML。 我想我将不得不诉诸其他手段获取NDS文件到Android设备...